让我们为画布应用程序假设以下情况:
i) 第 1 天: - 创建需要
read_stream,publish_stream,offline_access
权限的 Facebook 应用程序。当用户第一次访问应用程序时,authorize
调用将用户重定向到权限 ALLOW / DENY 屏幕,当用户允许时,它将用户重定向回画布 url。
画布 url 在其请求参数中的签名请求中具有 access_token,然后可用于运行应用程序。
下次访问该应用程序的同一用户不需要权限对话框,因为如果用户过去曾授权该应用程序,则 signed_request 包含 access_token。
代码如下所示:
if(access_token received from signed request)
// do something with user information
else
// redirect user for authorization flow
ii) 第 2 天: - 现在,假设我想在我的列表中再添加一个权限,user_birthday
read_stream,publish_stream,offline_access,user_birthday` 现在下面的逻辑会出现问题
if(access_token received from signed request)
// do something with user information <-- the access_token does not have new permission
else
// redirect user for authorization flow
由于 API 调用会影响应用程序的性能,如何有效地处理这种额外的权限添加?我不想使用类似的东西:
https://graph.facebook.com/me/permissions?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
每次应用程序加载时检查与令牌相关的权限。
更新:
分享一个好方法:将权限集与接收它的 access_token 一起存储。例如。如果当前权限是“basic_details-birthday-publish”(我们称之为 1),将 access_token 和权限集存储为
user | access_token | perm_set
Dhruv sdfsdfsdf 1
现在,在您的设置中,每当您需要请求新权限时,创建一个新权限集“basic_details-birthday-publish-checkins”(我们称之为 2),
那么您只需要为拥有 perm_set = 1 的访问令牌的用户而不是已经拥有 perm_set = 2 的用户显示权限对话框,这将消除使用“/me/permissions”检查每个用户的 access_token 的需要api。