После просмотра этой опции доступны две немедленные опции:
Перенаправление на путь OAuth в Facebook.
Используйте переданный код длявручную извлеките всю информацию об OAuth из Facebook.
Вот некоторый код, который выполняет некоторые шаги OAuth с заданным кодом.
require 'httparty'
require 'fb_graph'
def self.get_access_token(code, redirect_uri)
redirect_uri = remove_code_from_redirect_uri(redirect_uri)
response = HTTParty.get(ACCESS_TOKEN_URL, query: { code: code, client_id: FB_APP_ID, client_secret: FB_APP_SECRET, redirect_uri: redirect_uri })
return unless response.success?
results = Hashie::Mash.new
response.body.split('&').each do |param| key, value = param.split('='); results[key] = value; end
return results.access_token
end
def self.get_auth(access_token)
user = FbGraph::User.me(access_token).fetch
results = Hashie::Mash.new
results['info'] = Hashie::Mash.new
results['credentials'] = Hashie::Mash.new
results['uid'] = user.identifier
results['info']['name'] = user.name
results['info']['email'] = user.email
results['info']['image'] = user.picture
results['info']['nickname'] = user.username
results['credentials']['token'] = access_token
return results
end
private
def self.remove_code_from_redirect_uri(redirect_uri)
url, params = redirect_uri.split("?")
params = params.split('&').inject({}) { |hash, param| k, v = param.split('='); hash[k] = v; hash }
params.delete("code")
url + '?' + CGI::unescape(params.to_query)
end