Sha256: d9ee10948d056445523ab592c38253ef57e75ea6c1f2d2482d7e98fd3a711197

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

module FbGraph2
  class Auth < Rack::OAuth2::Client
    class Grant
      class FbExchangeToken < Rack::OAuth2::Client::Grant
        attr_required :fb_exchange_token
      end
    end

    def initialize(client_id, client_secret, options = {})
      super options.merge(
        identifier: client_id,
        secret: client_secret,
        host: URI.parse(FbGraph2.root_url).host,
        authorization_endpoint: '/oauth/authorize',
        token_endpoint: '/oauth/access_token'
      )
    end

    def fb_exchange_token=(access_token)
      @grant = Grant::FbExchangeToken.new(
        fb_exchange_token: access_token
      )
    end

    def access_token!(options = {})
      super options.merge(
        client_auth_method: :body
      )
    rescue Rack::OAuth2::Client::Error => e
      raise Exception.detect(e.status, e.response)
    end

    def debug_token!(input_token)
      token_metadata = TokenMetadata.new
      token_metadata.authenticate access_token!
      token_metadata.fetch(
        input_token: input_token.to_s
      )
    end

    def from_cookie(cookie)
      token = case cookie
      when String
        cookie
      else
        cookie["fbsr_#{identifier}"]
      end
      from_signed_request token
    end

    def from_signed_request(token)
      SignedRequest.new(token).verify! self
    end
  end
end

Dir[File.join(__dir__, 'auth/*.rb')].each do |file|
  require file
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fb_graph2-0.5.1 lib/fb_graph2/auth.rb
fb_graph2-0.5.0 lib/fb_graph2/auth.rb