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

Php 如何通过Facebook API发布多张照片,php,facebook,facebook-graph-api,facebook-php-sdk,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/phot

现在我在墙上贴了一张照片,如下所示:

$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',
   )
);
{
  "id": "10153677042736789"
}
它工作得很好,但是我可以发布多张照片吗,比如:

$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',
   )
);
{
  "id": "10153677042736789"
}

您可以按此处所述发出批处理请求:

但它很简单,通过您的图像循环,并直接发布它们

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

编辑:(关于墙上照片的分组)

如果一些照片上传到同一相册中,facebook会自动进行分组

目前,您无法通过Graph API在组中创建相册,目前不支持该功能,请参阅

但是您可以这样做-手动创建一个相册,然后通过-
\GET/{group id}/albums
,然后将代码与
album\u id
一起使用,而不是
group\u id
-

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

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

无法在同一个graph API调用中发布多张照片


请参阅文档:

您现在可以在一篇文章中将多个图像发布到提要或页面:

对于故事中的每张照片,使用参数为
published=false的
{user id}/photos
端点上传未发布的照片

您上传的每张照片都会有一个ID,如下所示:

$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',
   )
);
{
  "id": "10153677042736789"
}
使用
{user id}/feed
端点并使用上传照片返回的id发布多张照片的故事

 $response = $facebook->api("/me/feed", 'POST',
  array(
    'access_token=' => $access_token,
    'message' => 'Testing multi-photo post!',
    'attached_media[0]' => '{"media_fbid":"1002088839996"}',
    'attached_media[1]' => '{"media_fbid":"1002088840149"}'
  )
);

来源:

事实上,你可以上传一张多故事照片(我是用Graph Api和PHP完成的),但如果你需要安排这篇文章,问题就来了。你的文章是安排好的,但也会显示在页面的提要上。

另外,我正在使用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'];

您需要先将每个照片的“已发布”状态上载为false,然后使用未发布照片的ID将照片发送到/me/feed端点以计划照片。由于facebook在24小时内删除所有未发布的照片,因此该计划必须在照片上传后的24小时内完成

参考:

是的,但如果出现循环,则视觉上会有所不同。主要的想法是在一个“帖子”中保存4-5张照片(如所附的截图)。你不用担心。您共享的屏幕截图来自墙壁。如果在短时间内发布,Facebook会自动将其分组。你也会得到这个的。嗯。。。不,例如,它不会合并两张图片。我刚试过。我很高兴这有帮助。你能检查一下我的sol-yo你的老问题吗:-这是正确的方法,没有帮助,但我非常感谢你的努力:)事实是,我目前正在写一个服务,应该做这样的帖子,当然是自动的。所以我不能强迫用户手动创建相册:)嗨,你找到这个问题的解决方案了吗?正如FB文档中明确提到的[链接:,这对页面不起作用。我自己尝试过,尽管图像已成功上传,但它们根本没有出现在帖子中。因此,请更正您的答案。这对我不起作用。请参阅我最近的问题:这起作用,但如果我尝试更新它抛出的现有帖子无法编辑对象,这也适用于制作多图像pos使用ver.3.2(在过去,我很难通过旧版本的API在一个页面上发布多个图像)