处理Oauth 2.0-facebook gem错误100:已使用此授权代码



我一直在为我的rails应用程序设置facebook身份验证,在测试时,用我的facebook帐户登录后,我不断收到这个错误:

OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}

我真的不知道从哪里开始,但似乎在网上找不到其他关于它的信息。任何指导都将不胜感激,如果有用的话,很乐意提供更多信息。

我也遇到了这个问题。我在Rails日志中两次看到"(facebook)回调阶段启动"的消息。事实证明,我初始化了两次FB身份验证(我使用的是Devise和Omniauth Facebook),我猜其中一次是试图重置访问令牌。

禁用Omniauth Facebook中的初始值设定项(config/initializers/ominiauth.rb)修复了我的问题。

这是由于Facebook的更改,到目前为止这些更改是可选的,但将于12/5/12为所有人推出。来自12月12日突破性变化的开发者路线图:

OAuth授权码的新安全限制我们只会允许将授权码交换为访问令牌一次,并且将要求在10内将其兑换为访问令牌他们创作的分钟数。这符合OAuth 2.0规范从一开始就规定"授权代码必须短期和一次性使用"。有关更多信息,请查看我们的身份验证文档。

你需要更新你的应用程序才能对此进行说明。

干杯

这个错误发生在上一次facebook推送之后,今天早上刚刚向facebook报告。

因此,我想我们只需要等待,在此期间,将更多细节发布到这份报告中,并关注它,以帮助并寻求脸书用户来解决这个问题

我错误地初始化了OmniAuth两次,调用了config/initializers/omniauth.rb两次。

这将向中间件堆栈中添加两次OmniAuth::Builder。随着最近Facebook的更改,此操作开始失败,出现错误100

一旦我设法解决了这个问题,就确保添加了OmniAuth::Builder

要仔细检查中间件堆栈,请运行以下命令:

rake middleware

我遇到了同样的问题,最终找到了我的案例中的问题所在。因此,对于那些有这个问题并且只使用Omniauth而不使用Devise的人来说,问题的根本原因可能是重定向的路径不正确。

  1. 检查您的服务器开发.log
  2. 查找重定向位置(grep通过"重定向到")
  3. 要点如下:检查日志中的回调URL是否正确

在我的例子中,在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"更改为"/"似乎起到了很大的作用。

我建议你检查一下你的开发日志,看看你是否遇到了类似的错误。

相关内容

最新更新