2011-06-13 67 views
0

时,他们是离线访问用户信息, 用户授予offline_access和我将它们存储此:Facebook的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= [保存在数据库中的访问令牌]

我的错?

回答

2

首先,与offline_access权限访问令牌可能变为无效,如果:

  • 用户取消授权您的应用程序在其隐私设置中
  • 用户更改自己的密码,

你可以从Facebook about how to handle expired tokens阅读博客文章。

然后,你不应该:直接

  • 进行API网址的URL,当你调用graph.facebook.com/[function]...,但使用Facebook PHP SDK函数调用API像你一样。
  • 使用您正在使用的PHP SDK版本($facebook->getSession()来自v2.x)已被弃用,这可能是您问题的原因。

以下是有关Stackoverflow的一个关于how to handle offline_access access tokens with the Facebook PHP SDK v3.x的答案。

希望有帮助!