class FbGraph2::Auth::SignedRequest
Attributes
access_token[RW]
payload[RW]
user[RW]
Public Class Methods
new(token)
click to toggle source
# File lib/fb_graph2/auth/signed_request.rb, line 10 def initialize(token) signature_str, @payload_str = token.split('.', 2) @signature = UrlSafeBase64.decode64 signature_str payload_json = UrlSafeBase64.decode64 @payload_str self.payload = MultiJson.load(payload_json).with_indifferent_access rescue => e raise VerificationFailed.new 'Decode failed' end
Public Instance Methods
verify!(client)
click to toggle source
# File lib/fb_graph2/auth/signed_request.rb, line 19 def verify!(client) signature = OpenSSL::HMAC.digest OpenSSL::Digest::SHA256.new, client.secret, @payload_str raise VerificationFailed.new('Verification failed') unless @signature == signature instantiate client end
Private Instance Methods
instantiate(client)
click to toggle source
# File lib/fb_graph2/auth/signed_request.rb, line 27 def instantiate(client) if payload[:code].present? client.redirect_uri ||= '' client.authorization_code = payload[:code] self.access_token = client.access_token! else self.access_token = payload[:oauth_token] end self.user = User.new(payload[:user_id], payload[:user] || {}).authenticate(access_token) self end