存储用户的Facebook访问令牌

Col*_*nor 17 facebook oauth access-token

我有一个存储用户访问令牌的数据库(以及一些其他数据).我授权用户时,我的权限列表包括offline_access.

那么用户的访问令牌(客户端)是否始终与数据库中该用户的访问令牌相同?或者用户的访问令牌在注销,更改密码等时是否会发生变化?

bka*_*aid 22

不,即使使用offline_access,访问令牌也不会始终相同.当1)用户更改密码或2)停用您的应用程序时,您将需要获取新的访问令牌.否则,它应该保持不变.

用户Facebook id永远不会改变.这可以从访问令牌解析,也可以通过调用/ me graph api获得.

Facebook有一篇博文,详细介绍了这一点.

更新:Facebook添加了专门用于处理撤销授权的博客文章.

  • 简单 - 只用他们的Facebook用户ID存储它 - 永远不会改变. (3认同)
  • 如果要调用Facebook,则需要存储该令牌.但是,如果您实际上不需要它们,则不应该请求offline_access等权限,因为这会增加用户拒绝您的应用程序的机会. (2认同)

eth*_*ree 5

只是想指出已删除offline_access权限.

https://developers.facebook.com/roadmap/offline-access-removal/

"我们正在删除使用offline_access权限,通过开发人员应用程序中的迁移设置,我们现在允许选项使用具有长期过期时间的access_tokens,每次用户撤销您的应用程序时都可以续订(请参阅以下例外)."

通过更多搜索,您将找到如何扩展访问令牌.

自offline_access弃用以来如何扩展访问令牌的有效性

以下是/sf/answers/925709151/的工作示例:

$facebook->setExtendedAccessToken();
$access_token = $_SESSION["fb_".$fb_appId."_access_token"];
// now set it into the facebook object ....
$facebook->setAccessToken($access_token);
// now our fb object will use the new token as usual ...
$accessToken = $facebook->getAccessToken();
Run Code Online (Sandbox Code Playgroud)