1

我在我的網站上使用PHP(帶有js)SDK進行身份驗證。 直到現在,我從來沒有遇到過令牌的問題,一切都運行平穩。 由於最新的更新已經被推我收到了很多:12月'12更新後Facebook PHP SDK行爲異常

致命錯誤:未捕獲OAuthException:活動的訪問令牌必須用於查詢當前用戶的信息。在/home/content/54/9505854/html/src/fb/base_facebook.php扔在線路1106

令牌似乎接入將被無效(或不可挽回)每當有一個呼叫PHP的API。我做的是使用一個簡單的頁面,這一直只是返回預期當前訪問令牌:

//Facebook PHP SDK 
require_once 'src/fb/facebook.php'; 

//Config 
$facebook = new Facebook(array(
    'appId' => '...id...', 
    'secret' => '...secret...', 
)); 

$accessToken = $facebook->getAccessToken(); 
die($accessToken); 

本頁面猶若JavaScript的身份驗證,但離開該頁面的任何導航(或實際上刷新)後立即加載工作此腳本將以表單中的字符串形式返回appID和密碼[appID]|[secret]

基本上,對Facebook對象的任何調用都會使下一頁導航未經驗證。

另外我目前沒有將檢索到的訪問令牌存儲爲cookie或mySQL。我是不是該?

任何洞察問題或解決方案將是非常有益的!謝謝

回答

2

這現在已經修復。更新到最新版本的PHP-SDK(v3.2.2)。

0

我使用PHP-SDK「3.2.0」得到了同樣的錯誤..

按照新的PHD-SDK上面提到的https://github.com/facebook/facebook-php-sdk/commit/ca9472b3312dab3fdcfbffb4e45eb091f582dcb7

我已新增下列哪些讀取從保存的訪問令牌代碼段而是使用相同的代碼調用新的訪問令牌。

if ($code && $code == $this->getPersistentData('code')) { 
      // short-circuit if the code we have is the same as the one presented 
      return $this->getPersistentData('access_token'); 
} 

現在,它正在返回緩存訪問令牌而不是[appID] | [secret]之一。 它適合我。