class ApiUserAuth::Providers::Facebook

Get info from Facebook token

Constants

API_PATH
FIELDS

Public Class Methods

get_user(token) click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 43
def self.get_user(token)
  fb = Facebook.new(token)
  fb.get_user_data
end
new(token) click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 10
def initialize(token)
  @token = token
  @data = {}
end

Public Instance Methods

api_info_url() click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 15
def api_info_url
  params = {
    access_token: @token,
    fields: FIELDS.join(','),
    format: 'json'
  }
  URI("#{API_PATH}?#{params.to_query}")
end
get_user_data() click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 24
def get_user_data
  api_get_request
  user_data
end
user_data() click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 29
def user_data
  {
    id: @data[:id], name: @data[:name],
    email: @data[:email] || "#{@data[:id]}@facebook.com",
    provider: 'facebook',
    img_url: (@data[:picture] || {}).try(:[], :data).try(:[], :url),
    info: {
      birthday: @data[:birthday],
      city: (@data[:hometown] || {}).try(:[], :name),
      gender: @data[:gender]
    }
  }
end

Private Instance Methods

api_get_request() click to toggle source
# File lib/api_user_auth/providers/facebook.rb, line 50
def api_get_request
  response = ::Net::HTTP.get_response(api_info_url)
  case response.code.to_i
  when 200
    @data = JSON.parse(response.body, symbolize_names: true)
  when 400
    raise ApiUserAuth::Exceptions::InvalidToken, 'Invalid Token'
  else
    raise ApiUserAuth::Exceptions::ProviderError, 'Provider Error'
  end
end