Class: OmniAuth::Strategies::Vkontakte

Inherits:
Object
  • Object
show all
Includes:
ViewHelper::PageHelper, OmniAuth::Strategy
Defined in:
lib/omniauth/strategies/vkontakte.rb,
lib/omniauth/strategies/vkontakte/view_helper.rb

Defined Under Namespace

Classes: ViewHelper

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ViewHelper::PageHelper

#vkontakte_footer, #vkontakte_header, #vkontakte_login_button, #vkontakte_login_page

Constructor Details

#initialize(app, app_id, app_key, options = {}) ⇒ Vkontakte

Returns a new instance of Vkontakte.



17
18
19
20
21
22
# File 'lib/omniauth/strategies/vkontakte.rb', line 17

def initialize(app, app_id, app_key, options = {})
  @options = options
  OmniAuth.config.vkontakte_app_id = app_id
  OmniAuth.config.vkontakte_app_key = app_key
  super(app, :vkontakte)
end

Instance Attribute Details

#app_idObject (readonly)

Returns the value of attribute app_id.



24
25
26
# File 'lib/omniauth/strategies/vkontakte.rb', line 24

def app_id
  @app_id
end

Instance Method Details

#auth_hashObject



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/omniauth/strategies/vkontakte.rb', line 41

def auth_hash
  OmniAuth::Utils.deep_merge(super(), {
    'uid' => request[:uid],
    'user_info' => {
      'nickname' => request[:nickname],
      'name' => "#{request[:first_name]} #{request[:last_name]}",
      'first_name' => request[:first_name],
      'last_name' => request[:last_name],
      'image' => request[:photo],
      'urls' => { 'Page' => 'http://vkontakte.ru/id' + request[:uid] }
    }
  })
end

#callback_phaseObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/omniauth/strategies/vkontakte.rb', line 30

def callback_phase
  app_cookie = request.cookies["vk_app_#{OmniAuth.config.vkontakte_app_id}"]
  return fail!(:invalid_credentials) unless app_cookie
  args = app_cookie.split("&")
  sig_index = args.index { |arg| arg =~ /^sig=/ }
  return fail!(:invalid_credentials) unless sig_index
  sig = args.delete_at(sig_index)
  return fail!(:invalid_credentials) unless Digest::MD5.new.hexdigest(args.sort.join('') + OmniAuth.config.vkontakte_app_key) == sig[4..-1]
  super
end

#request_phaseObject



26
27
28
# File 'lib/omniauth/strategies/vkontakte.rb', line 26

def request_phase
  Rack::Response.new().finish
end