用户更改了Facebook的访问令牌,如何获取访问令牌的回调?

6
我正在使用Facebook SDK 4.2。我已经实现了AccessTokenTracker接口,如果令牌更改,则它可以工作。
我的问题是:如果用户从Android应用程序获取发布权限以发布某些内容。然后我从我的Facebook帐户中删除了该权限。现在在应用程序中,从令牌返回的是什么?
AccessToken accessToken = AccessToken.getCurrentAccessToken();

这个令牌具有发布权限,但在Facebook服务器上权限已更改。从Facebook帐户中删除该应用程序的权限后,我再次运行我的应用程序。然后我点击分享按钮,然后我遇到了错误。
{FacebookGraphResponseException:(#200)需要扩展权限:publish_actions httpResponseCode:403,facebookErrorCode:200,facebookErrorType:OAuthException,message:(#200)需要扩展权限:publish_actions}
那么我如何检查此令牌是否与Facebook服务器令牌匹配。
1个回答

2

我认为你不能主动“匹配”服务器访问令牌,但你可以使用

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卸载应用程序,而无需与应用程序本身交互。为了帮助应用程序检测何时发生这种情况,我们允许它们提供取消授权回调URL,每当发生这种情况时,该URL将被ping。

请参见:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接