我在我的rails项目中使用Facebook Graph API
,无论我使用oauth2
gem还是koala
,都需要callback_url
的oauth2
token = client.auth_code.get_token('code_value', :redirect_uri => 'http://localhost:8080/oauth/callback')
考拉
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
我尝试在我的项目中使用http://localhost:3000/callback
,但它无效。
我应该为此制定路线吗?
喜欢:get 'callback' => 'oauth#callback'
?
我应该在callback
中的OauthController
方法中写一下,它用于什么?感谢
答案 0 :(得分:2)
是的,你应该。 基本上,OAuth使用回调数据来提供用于验证用户身份的令牌。
例如
这只是一个基本的例子。
在您的情况下,您需要实现将解析回调数据的控制器。
以下是代码示例
@oauth = Koala::Facebook::OAuth.new(api_key, app_secret, callback_url)
=> #<Koala::Facebook::OAuth:0x007fc919d014e0 @app_id=1234567890, @app_secret="FaKeAppSecretKey", @oauth_callback_url="http://localhost:3000/callback">
@oauth.url_for_oauth_code
=> "https://www.facebook.com/dialog/oauth?client_id=893637180663238&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback"
当你去https://www.facebook.com/dialog/oauth?client_id=893637180663238&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback
时,FB会将你重定向到
http://localhost:3000/callback?code=CODE_FROM_CALLBACK
然后你应该使用使用代码来获取访问令牌的工具控制器
access_token = @oauth.get_access_token(params[:code])
=> "ACCESS_TOKEN"
@graph = Koala::Facebook::API.new(access_token)
=> #<Koala::Facebook::API:0x007fc91a903ae0 @access_token="ACCESS_TOKEN", @app_secret=nil>
profile = @graph.get_object("me")
=> {"id"=>"4492344324865", "email"=>"my_fake_email_address@gmail.com", "first_name"=>"Roman", "gender"=>"male", "last_name"=>"Sotnikov", "link"=>"https://www.facebook.com/app_scoped_user_id/4492344324865/", "locale"=>"en_US", "name"=>"Roman Sotnikov", "timezone"=>6, "updated_time"=>"2015-05-18T05:19:54+0000", "verified"=>true}
请查看https://github.com/arsduo/koala/wiki/OAuth以获取更多信息。
答案 1 :(得分:1)
回调网址是您的应用程序网址 - 一条GET路由 - 您希望第三方应用程序在完成其工作后重定向到。
所以在你的routes.rb文件中只需创建一个get route
get 'facebook_graph_callback', to: 'controller_name#action'
#A get route which is connected to a controller action
通常第三方会给你一些回复信息。通常是它的某种代码。在您的控制器操作中,您可以使用params
哈希查找它们。