根据OAuth 2.0 RFC处理Facebook API权限跳过/撤消

Dir*_*irk 4 facebook-graph-api oauth-2.0

假设我的应用程序希望代表来自第三方的用户请求权限A和B.

根据OAuth 2.0 RFC,第三方无需授予这些权限.但是,如果返回的权限不等于我的应用程序请求的权限,则授予的作用域将在第三方响应中返回.

通过阅读Facebook文档并在模拟跳过/拒绝流程时检查来自Facebook的响应,似乎未返回授予的范围,并且我的应用程序需要进行后续api调用以查看授予的权限.

它是否正确?

Igy*_*Igy 6

简答:是的,你这样做.

更长的答案:进行API调用https://graph.facebook.com/me/permissions?access_token=OAUTH_ACCESS_TOKEN_HERE - 在PHP或JS SDK中,您可以简化此操作,就像/me/permissionsSDK将为您包装服务器和访问令牌一样.

这显示了该用户当前授予您的应用程序的所有范围,示例输出为:

{
  "data": [
    {
      "installed": 1, 
      "manage_friendlists": 1, 
      "status_update": 1, 
      "photo_upload": 1, 
      "video_upload": 1, 
      "create_event": 1, 
      "create_note": 1, 
      "share_item": 1, 
      "publish_stream": 1, 
      "publish_actions": 1, 
      "user_about_me": 1, 
      "friends_activities": 1
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

由于用户可以追溯移除先前授予的权限,你需要从时间做这一次,无论如何,因为即使你有在特定的权限要求授予的范围回调,用户可以取消一些/所有的人几乎之后立即.