Class: FacebookClient::LegacySession

Inherits:
Object
  • Object
show all
Defined in:
lib/legacy_session.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fb, params) ⇒ LegacySession

Returns a new instance of LegacySession.



12
13
14
15
# File 'lib/legacy_session.rb', line 12

def initialize(fb, params)
  @fb=fb
  @params=verfiy_params_and_return(params)
end

Class Method Details

.create_and_secure(fb, params) ⇒ Object



6
7
8
9
10
# File 'lib/legacy_session.rb', line 6

def self.create_and_secure(fb, params)
  legacy_session = new(fb, params)

  legacy_session.secure? ? legacy_session : nil
end

Instance Method Details

#calculate_sig(facebook_sig_params) ⇒ Object



45
46
47
48
# File 'lib/legacy_session.rb', line 45

def calculate_sig(facebook_sig_params)
  raw_string = facebook_sig_params.map{ |*args| args.join('=') }.sort.join
  Digest::MD5.hexdigest([raw_string, @fb.secret].join)
end

#log(msg) ⇒ Object



50
51
52
# File 'lib/legacy_session.rb', line 50

def log(msg)
  # puts("legacy_session/#{@fb.app_id} #{msg}")
end

#secure?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/legacy_session.rb', line 17

def secure?
  @params.is_a?(Hash) and @params.has_key?('user')
end

#uidObject



21
22
23
# File 'lib/legacy_session.rb', line 21

def uid
  @params['user']
end

#verfiy_params_and_return(params) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/legacy_session.rb', line 25

def verfiy_params_and_return(params)
  if params['fb_sig'].nil? or !params['fb_sig'].is_a?(String)
    log 'missing fb_sig'
    return nil
  end

  facebook_sig_params = params.inject({}) do |collection, pair|
    collection[pair.first.sub(/^fb_sig_/, '')] = pair.last if pair.first[0,7] == 'fb_sig_'
    collection
  end

  if params['fb_sig']==calculate_sig(facebook_sig_params)
    log "secured for #{facebook_sig_params['user']}"
    return facebook_sig_params
  else
    log "sig #{params['fb_sig']} invalid, should be #{calculate_sig(facebook_sig_params)}"
    return nil
  end
end