OAuthException:此授权代码已被使用 - Facebook

时间:2012-12-06 21:29:41

标签: ruby-on-rails facebook-graph-api koala koala-gem

似乎Facebook在12月5日的新版本给我带来了一些问题。是否有其他人收到此错误?

  

Koala :: Facebook :: APIError(OAuthException:此授权码已被使用。)

我能够oauth,但是当我发出呼叫时,执行以下操作......我得到了错误。即以下:

@friends = graph.get_object("/me/friends")

这是Facebook更新:

  

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

如果有人可以提供帮助,或者甚至更具体地说明Facebook更新的含义,那将非常有帮助。我正在使用Rails考拉宝石。

这里似乎有报道,但没有答案有帮助。

http://developers.facebook.com/bugs/121266004701942?browse=search_50c113068fae60719135553

2 个答案:

答案 0 :(得分:0)

您是否已插入gem omniauth_facebook? 将以下代码放在intializers / omniauth.rb。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['app_id'], ENV['secret_id']
end

答案 1 :(得分:0)

他们的这种令人沮丧的变化 - 基本上你需要在加载get_user_info_from_cookies

的任何时候缓存在会话中
  fb_user = session[:fb_info] || oauth.get_user_info_from_cookies(cookies)
  session[:fb_info] = fb_user
  session[:fb_token] = fb_user['access_token'] # is is the right one?

不幸的是,它有时会引发错误,因为它会成为过期会话中的旧代码。我将它包装在一个开始/救援块中,并要求用户点击再次弹回oauth(这将获得一个新的令牌),或尝试登录而不用facebook / etc。