8

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

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

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

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

这是 Facebook 更新:

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

如果有人可以提供帮助,或者更具体地澄清 Facebook 更新的含义,那将非常有帮助。我正在使用 Rails Koala Gem 得到这个。

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

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

4

2 回答 2

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 / 等的情况下登录。

于 2013-08-06T23:14:24.670 回答
0

你插入了 gemomniauth_facebook 吗?将以下代码放入 intializers/omniauth.rb 中。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['app_id'], ENV['secret_id']
end
于 2013-07-23T07:23:23.947 回答