Class: FacebookClient::Session::SessionParam

Inherits:
Base
  • Object
show all
Defined in:
lib/session/session_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) ⇒ SessionParam

Returns a new instance of SessionParam.



16
17
18
19
# File 'lib/session/session_param.rb', line 16

def initialize(fb, params)
  @fb=fb
  @data=parse_fbs!(params["session"])
end

Class Method Details

.create_and_secure(fb, params) ⇒ Object



10
11
12
13
14
# File 'lib/session/session_param.rb', line 10

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

  iframe_session.secure? ? iframe_session : nil
end

Instance Method Details

#access_tokenObject



34
35
36
# File 'lib/session/session_param.rb', line 34

def access_token
  @data["access_token"]
end

#calculate_sig(params) ⇒ Object



44
45
46
47
48
49
# File 'lib/session/session_param.rb', line 44

def calculate_sig(params)
  args = params.reject{ |(k, v)| k == 'sig' }.sort.
    map{ |a| a.join('=') }.join

  Digest::MD5.hexdigest(args + @fb.secret)
end

#check_sig_and_return_data(params) ⇒ Object

private



40
41
42
# File 'lib/session/session_param.rb', line 40

def check_sig_and_return_data(params)
  params if calculate_sig(params) == params['sig']
end

#parse_fbs!(fbs) ⇒ Object



21
22
23
24
# File 'lib/session/session_param.rb', line 21

def parse_fbs!(fbs)
  @data = fbs &&
    check_sig_and_return_data(Yajl::Parser.parse(fbs))
end

#secure?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/session/session_param.rb', line 26

def secure?
  @data.is_a?(Hash) and @data.has_key?('uid')
end

#uidObject



30
31
32
# File 'lib/session/session_param.rb', line 30

def uid
  @data['uid']
end