假设我的应用程序希望代表用户从第三方请求权限 A 和 B。
根据 OAuth 2.0 RFC,第三方无需授予这些权限。但是,如果返回的权限不等于我的应用程序请求的权限,则授予的范围将在第三方响应中返回。
当我模拟跳过/拒绝流时,通过阅读 Facebook 文档并检查来自 Facebook 的响应,似乎未返回授予的范围,并且我的应用程序需要进行后续 api 调用以查看授予了哪些权限。
这个对吗?
假设我的应用程序希望代表用户从第三方请求权限 A 和 B。
根据 OAuth 2.0 RFC,第三方无需授予这些权限。但是,如果返回的权限不等于我的应用程序请求的权限,则授予的范围将在第三方响应中返回。
当我模拟跳过/拒绝流时,通过阅读 Facebook 文档并检查来自 Facebook 的响应,似乎未返回授予的范围,并且我的应用程序需要进行后续 api 调用以查看授予了哪些权限。
这个对吗?
简短的回答:是的,你知道。
更长的答案:进行 API 调用https://graph.facebook.com/me/permissions?access_token=OAUTH_ACCESS_TOKEN_HERE
- 在 PHP 或 JS SDK 中,您可以简化此操作,就像/me/permissions
SDK 将为您包装服务器和访问令牌一样。
这显示了该用户当前授予您的应用程序的所有范围,示例输出为:
{
"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
}
]
}
因为用户可以追溯删除以前授予的权限,所以无论如何您都需要不时执行此操作,因为即使您在特定权限请求中授予范围的回调,用户也几乎可以撤销部分/全部紧接着。