4

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

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

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

这个对吗?

4

1 回答 1

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
    }
  ]
}

因为用户可以追溯删除以前授予的权限,所以无论如何您都需要不时执行此操作,因为即使您在特定权限请求中授予范围的回调,用户也几乎可以撤销部分/全部紧接着。

于 2012-06-21T12:37:14.003 回答