【问题标题】:Error 100 This authorization code has been used错误 100 此授权码已被使用
【发布时间】:2013-02-20 02:49:30
【问题描述】:

我有一个简单的登录按钮,可以引导用户:

https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=CALLBACK_URL&type=web_server&scope=publish_stream,offline_access,email,friends_likes,user_likes

CALLBACK_URL 处的回调请求处理程序获取 code 参数并将其传递给:

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=CODE&redirect_uri=REQUEST_URL

并期望包含访问令牌的响应(请注意,REQUEST_URL 是来自 Facebook 的传入重定向的 URL)。这在 99% 的情况下都会成功,但有时我会得到这样的结果:

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

我知道该代码只能使用一次,有效期为 10 分钟,但我们会立即兑换该代码,并且我们的日志显示我们只发送一次该代码以获得访问令牌。

有没有其他人见过这个?

是否有可能 Facebook 发回了错误的错误?

【问题讨论】:

  • 根据您的描述,这似乎是 FB 方面的错误。你应该仔细检查你是否只发送一次请求,然后file a bug report
  • 我可以确认一下,你能提交一份报告并发布一个链接吗?我只能在安卓上得到这个

标签: oauth-2.0 facebook-authentication facebook-access-token facebook-authorization


【解决方案1】:

在受保护的函数parseSignedRequest($signed_request) 在返回之前添加这些行

/*
 * This method sets new code, and does not update persistent data,
 * that leads to persistent data loss and duplicate call to oAuth.
 * Duplicate call to oAuth with same auth code leads to error.
 * So persistent data must be changed alongside code changes.
 */
$this->setPersistentData('code', $data['code']);

这是一个临时解决方案,我不是 Facebook 开发者。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2014-01-06
    • 2016-06-21
    • 2016-06-22
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多