Module: FacebookSession
- Defined in:
- lib/facebook_session.rb,
lib/facebook_session/helper.rb,
lib/facebook_session/session.rb,
lib/facebook_session/version.rb,
lib/facebook_session/signed_request.rb
Defined Under Namespace
Modules: Helper
Classes: Session, SignedRequest
Constant Summary
collapse
- VERSION =
"0.0.4"
Class Method Summary
collapse
Class Method Details
.application_id ⇒ Object
23
24
25
|
# File 'lib/facebook_session.rb', line 23
def application_id
self.config[:application_id]
end
|
.application_secret ⇒ Object
27
28
29
|
# File 'lib/facebook_session.rb', line 27
def application_secret
self.config[:application_secret]
end
|
.base64_url_decode(string) ⇒ Object
31
32
33
34
35
|
# File 'lib/facebook_session.rb', line 31
def base64_url_decode(string)
encoded_string = string.gsub('-','+').gsub('_','/')
encoded_string += '=' while (encoded_string.length % 4 != 0)
Base64.decode64(encoded_string)
end
|
.config ⇒ Object
8
9
10
|
# File 'lib/facebook_session.rb', line 8
def config
@@config ||= {}
end
|
.config? ⇒ Boolean
12
13
14
|
# File 'lib/facebook_session.rb', line 12
def config?
self.config[:application_id] && self.config[:application_secret] ? true : false
end
|
16
17
18
19
20
21
|
# File 'lib/facebook_session.rb', line 16
def configure(options={})
options.each do |key, val|
self.config[key.to_sym] = val
end
self.config
end
|
.decode_payload(string) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/facebook_session.rb', line 37
def decode_payload(string)
encoded_sig, payload = string.split('.')
sig = base64_url_decode(encoded_sig)
decoded_payload = JSON.parse(base64_url_decode(payload))
decoded_payload.symbolize_keys!
expected_sig = OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha256'),
FacebookSession.application_secret,
payload
)
if sig == expected_sig
decoded_payload
else
nil
end
end
|