Sha256: 319a97565b6dc4f2654ce207f07271160c9d044c7d6a4979db284b7e90f0d496

Contents?: true

Size: 1.8 KB

Versions: 8

Compression:

Stored size: 1.8 KB

Contents

module FbGraph
  class Auth
    class VerificationFailed < Exception; end

    attr_accessor :client, :access_token, :user, :data

    def initialize(client_id, client_secret, options = {})
      @client = OAuth2::Client.new(client_id, client_secret, options.merge(
        :site => ROOT_URL
      ))
      if options[:cookie]
        from_cookie options[:cookie]
      elsif options[:signed_request]
        from_signed_request options[:signed_request]
      end
    end

    def authorized?
      self.access_token.present?
    end

    def authorize_uri(canvas_uri, options = {})
      endpoint = URI.parse SignedRequest::OAUTH_DIALOG_ENDPOINT
      params = options.merge(
        :client_id => self.client.id,
        :redirect_uri => canvas_uri
      )
      params[:scope] = Array(params[:scope]).join(',') if params[:scope].present?
      endpoint.query = params.to_query
      endpoint.to_s
    end

    def from_cookie(cookie)
      data = Cookie.parse(self.client, cookie)
      self.access_token = build_access_token(data)
      self.user = User.new(data[:uid], :access_token => self.access_token)
      self.data = data
      self
    end

    def from_signed_request(signed_request)
      data = SignedRequest.verify(self.client, signed_request)
      if data[:oauth_token]
        self.access_token = build_access_token(data)
        self.user = User.new(data[:user_id], :access_token => self.access_token)
      end
      self.data = data
      self
    end

    private

    def build_access_token(data)
      expires_in = unless data[:expires].zero?
        data[:expires] - Time.now.to_i
      end
      OAuth2::AccessToken.new(
        self.client,
        data[:oauth_token] || data[:access_token],
        nil,
        expires_in
      )
    end
  end
end

require 'fb_graph/auth/cookie'
require 'fb_graph/auth/signed_request'

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fb_graph-1.6.9 lib/fb_graph/auth.rb
fb_graph-1.7.0.alpha lib/fb_graph/auth.rb
fb_graph-1.6.8 lib/fb_graph/auth.rb
fb_graph-1.6.7 lib/fb_graph/auth.rb
fb_graph-1.6.5 lib/fb_graph/auth.rb
fb_graph-1.6.4 lib/fb_graph/auth.rb
fb_graph-1.6.3 lib/fb_graph/auth.rb
fb_graph-1.6.2 lib/fb_graph/auth.rb