Class: FacebookClient::Session::FbSigParam

Inherits:
Base
  • Object
show all
Defined in:
lib/session/fb_sig_param.rb

Instance Attribute Summary

Attributes inherited from Base

#fb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#graph

Constructor Details

#initialize(fb, params) ⇒ FbSigParam

Returns a new instance of FbSigParam.



15
16
17
18
# File 'lib/session/fb_sig_param.rb', line 15

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

Class Method Details

.create_and_secure(fb, params) ⇒ Object



9
10
11
12
13
# File 'lib/session/fb_sig_param.rb', line 9

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

  legacy_session.secure? ? legacy_session : nil
end

Instance Method Details

#access_tokenObject



28
29
30
# File 'lib/session/fb_sig_param.rb', line 28

def access_token
  @params["session_key"]
end

#calculate_sig(facebook_sig_params) ⇒ Object



52
53
54
55
# File 'lib/session/fb_sig_param.rb', line 52

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



57
58
59
# File 'lib/session/fb_sig_param.rb', line 57

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

#secure?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/session/fb_sig_param.rb', line 20

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

#uidObject



24
25
26
# File 'lib/session/fb_sig_param.rb', line 24

def uid
  @params['user']
end

#verfiy_params_and_return(params) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/session/fb_sig_param.rb', line 32

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