I\'m having a strange problem with the graph API, the below code used to work for me adding a post to a users news feed with a thumbnail of the attached photo (referenced in
you have to permission pubish_stream on your app and then try this using curl:-
$attachment = array(
'access_token' => $access_token,
'message' => 'i m success to using graph api for post wall',
'name' => 'Wall Post using graph api',
'link' => 'www.mysite.com',
'description' => 'Using the Graph API, any Facebook users Wall feed may be accessed by using this URL:',
'picture'=>'http://example.com/images/noimage.png'
);
$url = "https://graph.facebook.com/$facebook_id/feed";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);
print_r($result)
You are posting to the feed. You should post to the LINK instead.
Post the link to the picture to the link feed, and you should be fine.
https://developers.facebook.com/docs/reference/api/link/
I will post an example in a tick.
---- Later ----
Hmmmm, well the link option isn't satisfactory. You get a thumbnail of the picture, and you can click it to see the picture in full, but its very ugly. I really don't think that is what you are after.
So I did some more experiments, and kept coming up against that CDN error you mentioned. So I googled it and found the following:
Serving Images in Stream Stories Jun 18, 2010 3:21pm
We no longer allow stream stories to contain images that are hosted on the fbcdn.net domain. The images associated with these URLs aren't always optimized for stream stories and occasionally resulted in errors, leading to a poor user experience. Make sure your stream attachments don't reference images with this domain. You should host the images locally.
So there you have it, according to Facebook, you can no longer do what you want to do.
I am assuming user gave the permission for user_photos / friends_photos. Since you have the photo_id, you may try this.
$pic = $facebook->api("/PHOTO_ID");
$pic_url = $pic->source;
$attachment = array(
'access_token' => USER_ACCESS_TOKEN,
'message' => "...",
'caption' => "...",
'name' => "...",
'description' => "...",
'link' => URL,
'picture' => $pic_url
);
ADDED
You need to store the image some where locally ,in a local server . due to this article
I think the 'object_attachment'=>$photo_id
won't work any more.
You should change it to 'picture'=>$photo_url
$photo_Url = "link to your photo";//Valid Facebook Photo ID...
$facebook = new Facebook($config);
$attachment = array(
'access_token' => $user_token,
'message' => "Test Message",
'caption' => "THis is a Caption",
'name' => "Test Name",
'description' => "This is a description",
'link' => 'http://url.com/',
'picture' => $photo_Url,
);
$response = $facebook->api("/".$userID."/feed/", 'POST', $attachment);
You can find more Here