用户改变Facebook的访问令牌,如何获得访问令牌的回拨?

时间:2015-06-16 08:51:20

标签: android facebook facebook-access-token android-facebook

我正在使用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服务器令牌匹配。

1 个答案:

答案 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卸载应用,而无需与应用本身互动。为了帮助应用程序检测何时发生这种情况,我们允许他们提供取消授权的回调网址,只要发生这种情况就会被屏蔽。