【发布时间】:2012-02-09 16:12:01
【问题描述】:
让我们假设画布应用的情况如下:
i) 第 1 天:
- 创建需要的 Facebook 应用程序
read_stream,publish_stream,offline_access 权限。当一个
用户第一次访问应用,authorize 呼叫重定向用户
到一个允许/拒绝屏幕,以及当用户允许它时
将用户重定向回画布 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”检查每个用户的 access_token /permissions" api。
【问题讨论】:
标签: php facebook-graph-api facebook facebook-canvas