2012-06-06 130 views
2

我用下面的PHP代碼發佈從我的數據庫隨機郵件到我的Facebook粉絲頁面:Facebook的圖形API會話過期

require_once('src/facebook.php'); 
$appid = 'MY_APP_ID'; 
$appsecret = 'APP_SECRET'; 
$pageid = 'MY_PAGE_ID'; 
$token = 'MY_ACCESS_TOKEN'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => $appid, 
    'secret' => $appsecret, 
)); 

$message = 'Hello World'; 

//Information that makes up the facebook page post 
$attachment = array(
     'access_token' => $token, 
     'message' => $message 
); 

//Try to post to the facebook page 
try{ 
$res = $facebook->api('/'.$pageid.'/feed','POST',$attachment); 

} catch (Exception $e){ 

    echo $e->getMessage(); 
} 

這裏是src/facebook.php - https://github.com/facebook/facebook-php-sdk/blob/master/src/facebook.php

但它返回錯誤信息這樣的事情:

Error validating access token: Session has expired at unix time 1339020000. The current unix time is 1339022625. 

所以我的問題是我應該在我的代碼中做什麼改變?

P.S:我也看了會議到期的相關問題,但他們沒有一個幫助我。

在此先感謝。

+0

的Facebook已經貶值了訪問令牌。檢查了這一點https://developers.facebook.com/roadmap/offline-access-removal/ –

+1

@ RaquibulIslam,Facebook **不D **不贊成'access_token'但'offline_access'權限(用於獲得「永久性」'access_token') –

+0

@JuicyScripter你是對的,我錯過鍵入那個:( –

回答

0

我假設你在使用你的用戶訪問令牌而不是在這種情況下使用頁面訪問令牌。

您應該使用manage_pages權限對應用程序進行身份驗證,該權限將允許您訪問爲您的頁面檢索訪問令牌。這些有較長的到期期限。

授權此權限和獲取有效的訪問令牌當前用戶後,你應該做以下端點的請求檢索的網頁和應用程序的列表您管理:

https://graph.facebook.com/me/accounts?access_token=USER_ACCESS_TOKEN 

在這種反應是包括爲這些網頁和應用程序的訪問令牌:

{ 
    "data": [ 
    { 
     "name": "PAGE_TITLE", 
     "access_token": "PAGE_ACCESS_TOKEN", 
     "category": "PAGE_CATEGORY", 
     "id": "PAGE_ID" 
    }, 

你可以看到關於這個位置的詳細信息:

https://developers.facebook.com/docs/authentication/pages/

更新

對於過期的訪問令牌,你將需要通過瀏覽器來訪問你的應用程序並按照認證流程,以重新驗證用戶。

如何處理這個文檔是在這裏: http://developers.facebook.com/docs/authentication/access-token-expiration/

然後,您可以要求延長住的訪問令牌,這些都還是過期。你可以看到有關如何申請在此情況下,4其中的一個信息: http://developers.facebook.com/roadmap/offline-access-removal/

+0

謝謝你的回覆,但我確定使用頁面的訪問令牌,因爲會話將過期,問題是我必須獲得新的訪問令牌,然後才能發送消息到頁面。但我不知道如何獲得:( – user1272724

+0

if它已過期,您將不得不以用戶身份重新進行身份驗證並檢索新的訪問令牌。 –

+0

所以我的問題是我如何作爲用戶重新認證並在我的代碼中檢索新的訪問令牌。因爲每個會話(訪問令牌)的生命是2小時 – user1272724