0

要在用户离线时访问用户信息,用户授予offline_access,我通过以下方式存储它们:

$session=$facebook->getSession();
if($session)
{
    $access_token=$session['access_token'];

}

$qq=sprintf("insert into `tokens`(`uid`,`access_token`) values ('%s','%s')",$myid,$access_token);
$res1=mysql_query($qq);

但是当我尝试使用 graph.facebook.com 从他们那里收集信息时,它有时会起作用,有时会不起作用并给我这个错误:

验证访问令牌时出错:会话与当前存储的会话不匹配。这可能是因为用户在创建会话后更改了密码,或者 Facebook 出于安全原因更改了会话

我使用 graph.facebook.com/[function]?access_token=[保存在数据库中的访问令牌]

我有什么错?

4

1 回答 1

2

首先,在以下情况下,具有权限的访问令牌offline_access可能会失效:

  • 用户在其隐私设置中取消对您的应用的授权
  • 用户更改他的密码

您可以阅读 Facebook 上关于如何处理过期令牌的博客文章。

那么,你不应该:

  • 直接使用 URL 生成 API url,就像调用 时一样graph.facebook.com/[function]...,但使用 Facebook PHP SDK 函数进行 API 调用。
  • 不推荐使用您正在使用的 PHP SDK 版本($facebook->getSession()来自 v2.x),这可能是您的问题的原因。

这是 Stackoverflow 上关于如何offline_access使用 Facebook PHP SDK v3.x 处理访问令牌的答案

希望有帮助!

于 2011-06-14T02:47:32.230 回答