我一直在为我的 rails 应用程序设置 facebook 身份验证,并且在测试时,使用我的 facebook 帐户登录后,我不断收到此错误:
OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
我不确定从哪里开始,但似乎无法在网上找到任何关于它的其他内容。任何指导将不胜感激,如果有用的话,很乐意提供更多信息。
我一直在为我的 rails 应用程序设置 facebook 身份验证,并且在测试时,使用我的 facebook 帐户登录后,我不断收到此错误:
OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
我不确定从哪里开始,但似乎无法在网上找到任何关于它的其他内容。任何指导将不胜感激,如果有用的话,很乐意提供更多信息。
我也有这个问题。我看到“(facebook)回调阶段已启动。” 在我的 Rails 日志中出现两次消息。事实证明,我两次初始化 FB 身份验证(我使用的是 Devise 和 Omniauth-Facebook),我猜其中之一是试图重置访问令牌。
禁用 Omniauth-Facebook (config/initializers/omniauth.rb) 中的初始化程序解决了我的问题。
这是由于到目前为止 Facebook 的更改是可选的,但将在 2012 年 12 月 5 日为所有人推出。来自 2012 年12 月重大变更的开发者路线图:
OAuth 授权代码的新安全限制 我们只允许将授权代码交换为访问令牌一次,并要求在创建后 10 分钟内将它们交换为访问令牌。这符合 OAuth 2.0 规范,该规范从一开始就声明“授权代码必须是短暂的且一次性使用”。有关更多信息,请查看我们的身份验证文档。
您需要更新您的应用程序以解决此问题。
干杯
此错误发生在上次Facebook 推送之后,并已于今天早上向 facebook报告。
所以我想我们只需要等待,同时,在此报告中发布更多详细信息,并按照它来帮助和征求 Facebook 的人来解决这个问题!
我错误地初始化OmniAuth
了两次,调用config/initializers/omniauth.rb
了两次。
这将OmniAuth::Builder
两次添加到中间件堆栈。随着最近 Facebook 的变化,这开始失败并出现错误100
。
确保OmniAuth::Builder
在我设法解决此问题后添加。
要仔细检查您的中间件堆栈,请运行以下命令:
rake middleware
我有同样的问题,最后发现我的问题是什么。所以对于那些有这个问题并且只使用 Omniauth 而不使用 Devise 的人来说,问题的根本原因可能是重定向路径不正确。
就我而言,在 routes.rb 我有,例如:
get "mycontroller/home"
没关系,但是在我的 SessionController 中我也有:
def create
auth_hash = request.env['omniauth.auth']
user = User.from_omniauth(auth_hash)
session[:user_id] = user.id
redirect_to "mycontroller/home"
end
因此,我通过将控制器中的这一行更改为:
redirect_to "mycontroller/home"
到
redirect_to "/mycontroller/home"
所以我能够解决这个问题。似乎我的应用程序正在处理 facebook 身份验证,然后再次尝试执行此操作并产生此错误。奇怪,因为我试图重定向到 root_url。在任何情况下,在将用户信息存储在我的数据库中之后,将我重定向到的页面从“root_url”更改为“/”似乎都会有所不同。
我建议检查您的开发日志,看看您是否遇到类似的错误。