2012-05-23 151 views
1

我正在嘗試使用此代碼發佈給我的朋友的提要,但它不起作用。我卡住了,有什麼幫助?如何使用php sdk發佈在朋友的牆上?

$app_url ="http://localhost.local/PMS/facebook/PostWithPHP.php"; 

$facebook = new Facebook(array(
'appId' => 'APPID', 
'secret' => 'APPSECRET', 
'cookie' => true, 
)); 


    // Get User ID 
$user = $facebook->getUser(); 

if ($user) { 

$user_friends = $facebook->api('/me/friends'); 
sort($user_friends['data']); 

try { 
// Proceed knowing you have a logged in user who's authenticated. 
$access_token = $facebook->getAccessToken(); 
$vars = array(
    'message' => 'My Message', 
    'name' => 'title', 
    'caption' => 'Caption', 
    'link' => 'Link', 
    'description' => 'Description', 
    'picture' => 'image' 
); 

foreach($user_friends['data'] as $f){ 
     $sendTo = $f['id']; 
     $sendToName = $f['name']; 

     $result = $facebook->api("/".$sendTo ."/feed", 'post', $vars); 
    } 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
    } 

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=> $app_url)); 
    echo "<script type='text/javascript'>"; 
    echo  "top.location.href = '{$loginUrl}';"; 
    echo "</script>"; 
} 

,另一個問題是,使用這種代碼,但與替換$ facebook-> API( 「/".$ SENDTO。」/進料」, '後',$ VARS); by $ facebook-> api(「/ me/feed」,'post',$ vars);當然沒有循環播放朋友,我的時間表上的帖子。我怎麼能讓它發佈在我的牆上?

回答

0

我想對於一個時間表的帖子,你需要一個來自發布內容的用戶的accessToken。在你的情況下,你只需註冊用戶的accessToken,而不是他的朋友。我認爲這是FB的限制。

+0

毫米有意義,所以你認爲有沒有解決方案? – user1395625

0

1日檢查您是否獲得了用戶ID(地方回聲和檢查),如果不嘗試這個...我認爲這將有助於你的兄弟

$token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . $app_id ."&client_secret=" . $app_secret . 
    "&grant_type=client_credentials"; 

$access_token = file_get_contents($token_url); 

    $signed_request = $_REQUEST["signed_request"]; 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
    $user_id = $data["user_id"]; 
+0

但我有用戶ID,如果我回顯$ sendTo和$ sendToName,我看到我所有的朋友的名字和ID。 – user1395625

0

有幾件事你的代碼錯誤。首先,確保帖子的linkpicture參數是有效的網址。否則Facebook會給你一個錯誤信息((#100) link URL is not properly formatted)。此外,link必須轉到您的應用程序的畫布或網站URL。

這應該解決發佈到朋友牆上的問題。

但是,我可以提醒您,您的應用程序違反了Facebook平臺政策。除非有明確的用戶許可,否則Facebook不允許將多個帖子發佈到該流(無論是您的還是朋友)。它也阻止普通朋友看到來自多個朋友的相同消息。

+0

我的鏈接和圖片參數是正確的,我只是在這裏改變了他們的問題。所以你的意思是這段代碼是正確的,並且應該能夠一次發佈在1個朋友牆上(沒有循環的朋友)?但它並沒有這樣做! :( – user1395625

+0

嘗試使用圖形工具發佈到朋友的牆上,它會給你一個它工作的帖子的ID或錯誤信息。它可以幫助你識別問題,Facebook也有限制使用stream_publish防止垃圾郵件傳播。 –

相關問題