如果我正確理解你的問題,我想我已經解決了同樣的問題。我無法使用圖形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權限。
希望這會有所幫助。