Sha256: 25be2c1b8cbba07546c579f1f74195013e57cbd2d451e7c7ced6614a2a79d88f

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

require 'httparty'

# Handles Facebook authentication
#
# @!visibility private
class FacebookAuthenticator < BaseAuthenticator

  PROVIDER = 'facebook'.freeze
  TOKEN_URL = 'https://graph.facebook.com/v2.4/oauth/access_token?client_id=%{client_id}&client_secret=%{client_secret}&code=%{auth_code}&redirect_uri=%{redirect_uri}'.freeze
  PROFILE_URL = 'https://graph.facebook.com/v2.4/me?fields=email,name&access_token=%{access_token}'.freeze

  private

    def connect_login_to_account(login, user)
      login.update_attributes!(uid: user[:id], provider: PROVIDER)
    end

    def create_login_from_account(user)
      login_attributes = {
        identification: user[:email],
        uid: user[:id],
        provider: PROVIDER
      }

      Login.create!(login_attributes)
    end

    def access_token
      response = get_request(token_url)
      response.parsed_response.symbolize_keys[:access_token]
    end

    def get_user(access_token)
      @facebook_user ||= begin
        parsed_response = get_request(user_url(access_token)).parsed_response
        parsed_response.symbolize_keys
      end
    end

    def token_url
      url_options = { client_id: RailsApiAuth.facebook_app_id, client_secret: RailsApiAuth.facebook_app_secret, auth_code: @auth_code, redirect_uri: RailsApiAuth.facebook_redirect_uri }
      TOKEN_URL % url_options
    end

    def user_url(access_token)
      PROFILE_URL % { access_token: access_token }
    end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_api_auth-0.0.8 app/services/facebook_authenticator.rb
rails_api_auth-0.0.7 app/services/facebook_authenticator.rb
rails_api_auth-0.0.6 app/services/facebook_authenticator.rb
rails_api_auth-0.0.5 app/services/facebook_authenticator.rb