我正在使用Facebook SDK 4.2。我已经实现了AccessTokenTracker接口,如果更改了令牌,它将正常工作。
我的问题是:如果用户使用publish_permission从Android应用发布内容。然后我从我的Facebook帐户中删除该权限。现在在app中,令牌从
返回AccessToken accessToken = AccessToken.getCurrentAccessToken();
此令牌具有publish_permission,但在Facebook服务器上的权限已更改。 从该帐户的Facebook帐户中删除权限后。我再次运行我的应用程序。然后我按分享按钮,然后我收到错误
{FacebookGraphResponseException:(#200)需要扩展权限:publish_actions httpResponseCode:403,facebookErrorCode:200,facebookErrorType:OAuthException,message:(#200)需要扩展权限:publish_actions}
那么如何检查此令牌是否与Facebook服务器令牌匹配。
答案 0 :(得分:2)
我认为你不能积极地“匹配”#34;服务器访问令牌,但您可以使用
GET /debug_token?input_token={input-token}&access_token={access-token}
调用以检查当前存储的访问令牌是否包含特定权限,其中
- input_token:您想要获取有关
的信息的访问令牌- access_token:您的应用访问令牌或来自应用开发者的有效用户访问令牌
生成的JSON将包含一个包含实际权限的data.scopes
数组。
或者,我认为更适合您的用例,您也可以使用
GET /me/permissions?access_token={access_token}
在触发共享之前,检查publish_actions
权限是否仍然存在。此外,还有取消授权回拨机制,当用户卸载您的应用时会触发该机制:
人们可以通过Facebook.com卸载应用,而无需与应用本身互动。为了帮助应用程序检测何时发生这种情况,我们允许他们提供取消授权的回调网址,只要发生这种情况就会被屏蔽。
见