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

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

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

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

这个错误发生在最后一次facebook推送之后,并且今天早上已经报告给了facebook。

所以我想我们只需要等待,同时,在此报告中发布更多详细信息并按照它帮助并征求facebook人员来解决这个问题!

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

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

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

OAuth授权码的新安全限制我们只允许一次授权代码交换访问令牌,并要求在创建后的10分钟内将其交换为访问令牌。 这与OAuth 2.0规范一致,从一开始就说“授权代码必须是短期和单次使用”。 有关更多信息,请查看我们的身份validation文档。

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

干杯

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

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

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

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

 rake middleware 

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

  1. 检查服务器development.log
  2. 找到它重定向的位置(grep by“Redirected to”)
  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身份validation,然后尝试再次执行它并产生此错误。 奇怪,因为我试图重定向到root_url。 在任何情况下,在我的数据库中存储用户信息后,将我重定向的页面从“root_url”更改为“/”似乎有所不同。

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