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

Access Token of Facebook changed by user, How to get call back for Access Token?

我正在使用 Facebook SDK 4.2。我已经实现了 AccessTokenTracker 接口,如果更改了令牌,它就可以工作。

我的问题是:如果用户从 Android 应用中获得 publish_permission 的 post 东西。然后我从我的 Facebook 帐户中删除该权限。现在在应用程序中,令牌 return 来自

AccessToken accessToken = AccessToken.getCurrentAccessToken();

此令牌有 publish_permission,但在 Facebook 服务器上的权限已更改。 从该应用程序的 Facebook 帐户删除权限后。我再次 运行 我的应用程序。然后我按下分享按钮,然后我得到了错误

{FacebookGraphResponseException: (#200) Requires extended permission: publish_actions httpResponseCode: 403, facebookErrorCode: 200, facebookErrorType: OAuthException, message: (#200) Requires extended permission: publish_actions}

那么如何检查此令牌是否与 Facebook 服务器令牌匹配。

我认为您不能主动 "match" 服务器访问令牌,但您可以使用

GET /debug_token?input_token={input-token}&access_token={access-token}

调用检查当前存储的访问令牌是否包含特定权限,其中

  • input_token: the access token you want to get information about
  • access_token: your app access token or a valid user access token from a developer of the app

生成的 JSON 将包含一个包含实际权限的 data.scopes 数组。

或者,我认为这更适合您的用例,您也可以使用

GET /me/permissions?access_token={access_token}

在触发分享前,检查publish_actions权限是否还在。此外,还有 取消授权回调 机制,当用户卸载您的应用程序时会触发该机制:

People are able to uninstall apps via Facebook.com without interacting with the app itself. To help apps detect when this has happened, we allow them to provide a de-authorize callback URL which will be pinged whenever this occurs.