Ruby on rails 3 如何将Facebook JavaScript SDK与魔法宝石一起使用
我遵循了关于使用Facebook处理用户登录的规则Ruby on rails 3 如何将Facebook JavaScript SDK与魔法宝石一起使用,ruby-on-rails-3,facebook-javascript-sdk,sorcery,Ruby On Rails 3,Facebook Javascript Sdk,Sorcery,我遵循了关于使用Facebook处理用户登录的规则 # callback method called by Facebook after getting the authorization by the user if user = login_from(provider) # provider == "facebook" redirect_to root_path #, :notice => "Logged in from #{provider.titleize}!" else
# callback method called by Facebook after getting the authorization by the user
if user = login_from(provider) # provider == "facebook"
redirect_to root_path #, :notice => "Logged in from #{provider.titleize}!"
else
begin
user = create_from(provider)
...
但是,它只要求我的用户离开我的网站,转到Facebook页面,然后在这里重定向
我想实现的是我在使用Facebook JavaScript SDK时看到的,它是我页面上的一个干净的弹出窗口。为了实现这一目标,我采取了以下措施:
但是,authResponse
只包含一个accessToken
和一个signedRequest
和一个userid
,而巫术需要一个code
是否有任何方法可以正确执行此操作(或使用accessToken
获取code
)
但是,authResponse只包含accessToken、signedRequest和userid,而巫术需要代码
是否有正确的方法(或者使用accessToken获取代码?)
在服务器端流程中,code
只是获取访问令牌的中间步骤–app获取代码,并将代码交换为访问令牌
因为在客户端流中,当访问令牌完成时,您已经获得了一个访问令牌,因此它没有比这更“合适”的了
所以你有两个选择:
- 或者重构你的巫术东西,让它跳过获取代码并将其交换为访问令牌的步骤,并在获取后直接“设置”访问令牌(巫术可能希望设置它的任何地方);或
- 坚持服务器端流程,但自己在弹出窗口中打开。然后你仍然会得到代码,但是你会在弹出窗口中得到它。因此,您必须关闭弹出窗口,然后自己重新加载原始窗口
访问\u令牌
:谢谢!
$('#sign_in').click (e) ->
e.preventDefault()
FB.login (response) ->
window.location = '/auth/facebook/callback' if response.authResponse