2012-08-02 60 views
0

我有一個Facebook應用程序,我想用它來代表他們在我的客戶的Facebook Page Walls上發佈信息。我現在設置了它,以便當他們驗證我的應用程序時,我得到Access令牌,但是當我發佈到牆上時,出現以下錯誤:「OAuthException:驗證訪問令牌時出錯:會話無效,因爲用戶已登錄去「。發佈到Facebook主頁牆未登錄用戶

如何從我的腳本發帖而不登錄?

這裏是我的代碼:

include_once('fb-php-sdk/src/facebook.php'); 
$facebook = new Facebook(array(
    'appId' => 'XXX', 
    'secret' => 'XXX', 
)); 
try { 
    $page_id = '215133535279290'; //page id of the customer's facebook page 
    $args = array(
     'access_token' => 'XXX', //access token received when user authenticated app 
     'message'  => 'A test message' 
    ); 
    $post_id = $facebook->api("/$page_id/feed","post",$args); 
} catch (FacebookApiException $e) { 
echo "Error:" . $e; 
} 
+0

您需要在獲取令牌時詢問離線權限 – Ashley 2012-08-02 12:59:01

+0

@Ashley https://developers.facebook.com/roadmap/offline-access-removal/ – Sammaye 2012-08-02 13:01:46

回答

0

新的Facebook API具有所謂擴展的訪問令牌(它取代了離線訪問:https://developers.facebook.com/roadmap/offline-access-removal/我認爲),我相信持續溫度高達60天(或類似的東西)。要使用它,簡單地獲得訪問令牌時通過您的網站日誌:

$token = $facebook->getAccessToken(); 

保存到數據庫,並使用此令牌後:

$facebook = new Facebook(); 
$facebook->setAccessToken($accessTokenFromDB); 

那麼你應該能夠繼續,就好像用戶已登錄。

至於用戶正在註銷的部分,請確保您使用的是最新版本的API而不是舊版本,並且還要確保「方案2:如果您已經先前請求offline_access - 2012年4月30日更新「頁面的標題我聯繫了。

您可以繼續使用offline_access直到10月3日,但爲什麼如果它在2個月內被關閉了,並且必須重寫您的代碼。

0

獲取publish_stream擴展權限。擁有此權限後,您可以在用戶離線時使用應用訪問令牌發佈Feed摘要。在這種情況下,不需要offline_access權限或保存和使用用戶訪問令牌。

+0

AFAIK頁面的所有者需要授予此訪問權限(publish_stream)首先在應用程序可以離線後發佈到應用程序。這就是訪問令牌的用途。 offline_access被高度棄用,根本不需要。查看文檔,有幾種方法可以刷新過期的「長壽命access_token」(60天)。 – 2013-05-13 07:05:03