Class: FacebookClient::IframeSession

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fb, params) ⇒ IframeSession

Returns a new instance of IframeSession.



14
15
16
17
# File 'lib/iframe_session.rb', line 14

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

Class Method Details

.create_and_secure(fb, params) ⇒ Object



8
9
10
11
12
# File 'lib/iframe_session.rb', line 8

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

  iframe_session.secure? ? iframe_session : nil
end

Instance Method Details

#calculate_sig(params) ⇒ Object



38
39
40
41
42
43
# File 'lib/iframe_session.rb', line 38

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



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

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

#parse_fbs!(fbs) ⇒ Object



19
20
21
22
# File 'lib/iframe_session.rb', line 19

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

#secure?Boolean

Returns:

  • (Boolean)


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

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

#uidObject



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

def uid
  @data['uid']
end