2011-05-19 74 views
2

我已經瞭解了基本概念(我認爲),但似乎無法成功發佈任何使用Facbook提供的PHP類的內容。鑑於這個例子,任何人都可以看到任何可能的問題?Facebook API(通過PHP):張貼到飼料?

// Initialize Facebook API 
$fb = new Facebook(array(
    'appId' => FACEBOOK_APP_ID, 
    'secret' => FACEBOOK_SECRET, 
    'cookie' => true 
)); 

if($fb->getSession()) { 
    $res = $fb->api('/me/feed/', 'post', array(
     'message' => 'test message', 
     'description' => 'testing' 
    )); 
} 

var_dump($res); 

當我輸出$ res的內容時,我得到了一個面對面的NULL。有任何想法嗎?如果上面看起來是正確的,任何人都可以提出一些我可能會嘗試調試的東西?

+0

檢查if結構之間的代碼塊是否真的在運行,意思是說:$ fb-> getSession()是真的嗎? – Jeroen 2011-05-19 16:15:34

+0

用於調試:在您的線路之間放置隨機的'echo「。例如。 'echo'Debug 1';'在創建'$ fb'和'echo'後調試2';'就在你的'if()'中。這樣你可以看到哪一行代碼有問題。 *(我不確定'回聲'可能會在Facebook環境中做什麼。)* – LouwHopley 2011-05-19 16:30:22

回答

4

在您的應用程序中,當您檢查用戶是否登錄Facebook時,請確保您確認您的應用程序請求向用戶牆壁發佈'特殊權限'。您可以通過修改代碼如下做到這一點:

$url = $this->facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 'req_perms' => 'user_status,publish_stream')); 

注意關鍵的req_perms被設置爲一個值的列表,包括「publish_stream」。如果您沒有此權限,則Feed呼叫將失敗。

此外,無論這是否真的存在問題,您可以使用try-catch塊封裝您的Facebook請求,以捕獲FacebookApiException類型的異常,以便在出現錯誤時獲取更多信息。例如:

 try { 
      $uid = $this->facebook->getUser(); 
      $me = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      print_r($e); 
     } 
+1

這正是我遇到的問題。我知道我不得不請求特定的權限,但文檔(像往常一樣)已經過時,只能引用舊的方法。 – Wilco 2011-05-31 16:46:55