rah*_*810 11 php facebook facebook-graph-api
我有一个正在运行的应用程序,代表用户为其中一个朋友安排预定的墙贴.
该应用程序运行良好已有一段时间,但最近安静的一些用户已报告邮件未被发布.
日志显示
OAuthException: The access token could not be decrypted.
Run Code Online (Sandbox Code Playgroud)
即使用户重新访问应用程序并重置其访问令牌,该异常仍然存在.
什么可能是错误的根源和解决方法?
如果在向Facebook API发出HTTP请求时收到以下错误消息:
{
"error": {
"message": "The access token could not be decrypted",
"type": "OAuthException",
"code": 190
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着访问令牌时,你的HTTP请求是要发送给Facebook 不是有效的.
如果查看HTTP响应标头,您将看到如下字段:
WWW-Authenticate:OAuth "Facebook Platform" "invalid_token" "The access token could not be decrypted"
Run Code Online (Sandbox Code Playgroud)
我收到上面的错误,因为我发送的访问令牌比有效的1个字符短.
在将访问令牌与我发送的访问令牌进行比较后,我发现了这个错误.
您可以使用访问令牌调试程序检查 Facebook上使用的OAuth 2.0访问令牌(承载令牌)的有效性.
小智 5
Facebook 令牌的大小不断增加,并且不再限制为 255 个字符,因此如果您使用大小有限的变量或数据库字段,存储它们的方式可能会导致异常。
这是在 Facebook 文档的最后一部分中指定的:https ://developers.facebook.com/docs/facebook-login/access-tokens
尺寸
预计所有类型的访问令牌的大小都会随着时间的推移而变化,因为 Facebook 会更改其中存储的内容及其编码方式。您可以预期它们会随着时间的推移而增大和缩小。请使用没有特定最大大小的可变长度数据类型来存储访问令牌。
例如,要在 SQL 中存储标记,您可以避免使用 VARCHAR 并使用 TEXT 或 BLOB 代替
就我而言,这是由于当我向“me”发出请求时,accessToken 不包含 userID(我假设它尝试从令牌确定 userID)。
令牌调试器响应:
App ID:
<ID> : <app>
User ID: Unknown
Issued: Unknown
Expires: 1339171200 (in about an hour)
Valid: True
Origin: Web
Scopes:
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我没有请求“我”,而是请求了 userID 的配置文件,我可以直接从 authResponse 访问该配置文件。
| 归档时间: |
|
| 查看次数: |
13713 次 |
| 最近记录: |