我有一个简单的登录按钮,指示用户:
CALLBACK_URL
处的回调请求处理程序获取code
参数并将其传递给:
并期望包含访问令牌的响应(请注意REQUEST_URL
是来自Facebook的传入重定向的URL)。这有99%的时间成功,但偶尔我会得到这个:
{"error":{"message":"This authorization code has been used.", "type": "OAuthException","code": 100}}
。
我知道代码只能使用一次,寿命为10分钟,但我们会立即兑换代码,而我们的日志记录表明我们只发送一次访问令牌。
之前有其他人见过吗?
Facebook有可能发回错误的错误吗?
答案 0 :(得分:0)
在受保护的函数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开发人员。