2011-06-13 80 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的答案。

希望有幫助!