2011-05-02 83 views
0

使用PHP腳本(和Graph API)登錄時,我可以發佈到我的Facebook牆上頁面。我在我的主要網站上有一個新聞頁面,並且想將新聞項目推送到Facebook,因爲它們發佈到我的網站(我猜是有多少人使用該API)。使用腳本發佈到Facebook牆上,並自動登錄

我已將offline_access和publish_stream授予我的FB帳戶,供FB應用程序使用。

如果我關閉了我的FB會話並嘗試從我的新聞頁面發佈,Facebook提供了一個登錄頁面。我已經授予訪問權限,所以我不知道我還缺少什麼。

回答

0

如果我正確理解你的問題,我想我已經解決了同樣的問題。我無法使用圖形API完全解決它,但圖形api和傳統rest api的組合完成了這個訣竅。一旦你已經獲准爲您的應用程序發佈到你的Facebook頁面牆上,下面的代碼應該做你想要什麼:

$url = "https://graph.facebook.com/oauth/access_token"; 
$client_id = "XXXXXXXXXXXXXX"; 
$client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$postString = "client_id=$client_id&client_secret=$client_secret&type=client_cred"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_FAILONERROR, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postString); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$token = curl_exec($curl); 
curl_close($curl); 

$message = rawurlencode($description.'. Notes:'.$notes); 
$url = "https://api.facebook.com/method/stream.publish"; 
$postString = "message=$message&uid=XXXXXXXXXXXXX&$token"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_FAILONERROR, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $postString); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
$response = curl_exec($curl); 
curl_close($curl); 

幾件事情值得注意。
1.休息中的uid api $ postString是您的Facebook頁面的uid。你不需要target_id,因爲當uid是一個頁面時,它只能發佈給自己。
2.您的$ message必須是rawurlencoded,因爲這是其餘api接受的格式。
3.這將發佈到您的頁面作爲您的APP,而不是發佈到您的網站的用戶。爲此,您需要獲得所有用戶的publish_stream權限。

希望這會有所幫助。