如何通过Facebook API发布多张照片

时间:2014-04-11 14:37:46

标签: php facebook facebook-graph-api facebook-php-sdk

现在我发布一张照片到墙上:

$response = $facebook->api("/$group_id/photos", "POST", array(
    'access_token=' => $access_token,
    'message' => 'This is a test message',
    'url' => 'http://d24w6bsrhbeh9d.cloudfront.net/photo/agydwb6_460s.jpg',
   )
);

它工作正常,但我可以以某种方式发布多张照片,如下所示:

enter image description here

提前致谢!

5 个答案:

答案 0 :(得分:14)

您现在可以在一个帖子中将多个图片发布到您的Feed或页面:

对于故事中的每张照片,使用带有参数{user-id}/photos的{​​{1}}端点上传未发布的照片​​。

您将为您上传的每张照片获取一个ID:

published=false

使用{ "id": "10153677042736789" } 端点发布多照片故事并使用上传照片返回的ID

{user-id}/feed

来源:Publishing a multi-photo story

答案 1 :(得分:7)

您可以按照此处所述进行批量请求:https://stackoverflow.com/a/11025457/1343690

但是直接浏览图像并直接发布它们很简单。

foreach($photos as $photo)
{
       //publish photo
}


修改

(关于墙上照片的分组)

如果某些照片上传到相同的相册,则此分组会自动由Facebook完成。

目前您无法通过图谱API在论坛中创建 - 不支持(截至目前),请参阅this bug

但您可以手动执行此操作 - 创建相册,然后通过以下方式获取album_id -
\GET /{group-id}/albums,然后使用代码album_id代替group_id -

foreach($photos as $photo){
   $facebook->api("/{album-id}/photos", "POST", array(
      'access_token=' => $access_token,
      'name' => 'This is a test message',
      'url' => $photo
      )
   );
}

我已经测试过了,看到了结果 -

enter image description here

答案 2 :(得分:4)

实际上你可以上传一张多故事照片(我是使用Graph Api和PHP完成的),但是如果你需要安排这篇文章就会出现问题。你的帖子是时间表,但它也显示在页面的提要上。
< / p>

P.S。我正在使用Graph Api v2.9

PHP代码

$endpoint = "/".$page_id."/photos";

foreach ($multiple_photos as $file_url):
array_push($photos, $fb->request('POST',$endpoint,['url' =>$file_url,'published' => FALSE,]));
endforeach;

$uploaded_photos = $fb->sendBatchRequest($photos,  $page_access_token); 

foreach ($uploaded_photos as $photo):
array_push($data_post['attached_media'], '{"media_fbid":"'.$photo->getDecodedBody()['id'].'"}');
endforeach;

$data_post['message'] = $linkData['caption'];

$data_post['published'] = FALSE;

$data_post['scheduled_publish_time'] = $scheduled_publish_time;

$response = $fb->sendRequest('POST', "/".$page_id."/feed", $data_post, $page_access_token);

$post_id = $cresponse->getGraphNode()['id'];

答案 3 :(得分:0)

  

无法在同一图表API调用中发布多张照片。

请参阅文档:https://developers.facebook.com/docs/graph-api/reference/user/photos

答案 4 :(得分:0)

您将需要首先将每张照片的已发布状态上传为false,然后使用未发布照片的ID到/ me / feed端点来安排照片。计划必须在照片上传后的24小时内完成,因为Facebook会在24小时内删除所有未发布的照片​​。

参考: https://developers.facebook.com/docs/graph-api/photo-uploads/