处理Oauth 2.0-facebook gem error 100:此授权码已被使用

时间:2012-07-10 05:39:40

标签: ruby-on-rails facebook oauth-2.0

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

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

我不确定从哪里开始,但似乎无法在网上找到任何其他内容。任何指导都将不胜感激,很高兴提供更多信息,如果它有用。

6 个答案:

答案 0 :(得分:17)

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

在Omniauth-Facebook中禁用初始化程序(config / initializers / omniauth.rb)解决了我的问题。

答案 1 :(得分:7)

这是由于Facebook更改到目前为止已经可选,但将于12月5日推出给所有人。从12月12日突破变化的Developer Roadmap开始:

  

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

您需要更新您的应用以解决此问题。

干杯

答案 2 :(得分:2)

此错误发生在最后一次facebook push之后,并且今天早上一直是reported到Facebook。

所以我想我们只需要等待,同时将更多详细信息发布到此report关注以及帮助并征求facebook人员解决此问题问题!

答案 3 :(得分:1)

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

这会将OmniAuth::Builder两次添加到中间件堆栈。随着最近的Facebook更改,这开始失败,错误100

在设法解决此问题后,确保OmniAuth::Builder已添加。

要仔细检查中间件堆栈,请运行:

rake middleware

答案 4 :(得分:1)

我遇到了同样的问题,终于找到了我的问题。 因此,对于那些有这个问题且只使用Omniauth而没有设计的人来说,问题的根本原因可能是错误的重定向路径。

  1. 检查服务器development.log
  2. 查找重定向的位置(grep by“Redirected to”)
  3. 以下是要点:检查日志中回调网址是否正确
  4. 在我的情况下,在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"
    

答案 5 :(得分:0)

所以我能够解决这个问题。似乎我的应用程序正在处理facebook身份验证,然后尝试再次执行它并产生此错误。因为我试图重定向到root_url,所以很奇怪。在任何情况下,在我的数据库中存储用户信息后,将我重定向的页面从“root_url”更改为“/”似乎完全不同。

我建议您查看开发日志,看看是否收到类似的错误。