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

Red*_*ber 11 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',
   )
);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

提前致谢!

Kco*_*der 16

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

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

您将为上传的每张照片获取ID,如下所示:

{
  "id": "10153677042736789"
}
Run Code Online (Sandbox Code Playgroud)

使用{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"}'
  )
);
Run Code Online (Sandbox Code Playgroud)

资料来源:发布多照片故事

  • 正如FB文档中明确提到的那样[link:https://developers.facebook.com/docs/graph-api/photo-uploads#upload],这对PAGES不起作用.我试过自己,尽管图片上传成功,但他们根本没有出现在帖子中.所以,请更正你的答案. (3认同)
  • 这也适用于使用版本将多图像发布到特定页面。3.2. (过去,我很难通过旧版本的 API 将多个图像发布到页面。) (2认同)

Sah*_*tal 7

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

但它很容易循环你的图像并直接发布它们.

foreach($photos as $photo)
{
       //publish photo
}
Run Code Online (Sandbox Code Playgroud)


编辑:

(关于墙上的照片分组)

如果某些照片上传到同一专辑中,则此分组由facebook自动完成.

目前您无法通过Graph API 在组中创建相册- 它不受支持(截至目前),请参阅此错误.

但你可以这样做 - 手动创建一个相册,然后获取album_idby-
\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
      )
   );
}
Run Code Online (Sandbox Code Playgroud)

我测试了它,看到结果 -

在此输入图像描述

  • 嗯......不,它没有合并两张图片,例如.我刚试过 (2认同)

小智 6

实际上,您可以上传多故事照片(我使用 Graph Api 和 PHP 完成),但是如果您需要安排此帖子,问题就会出现。您的帖子已安排好,但也会显示在页面的供稿中。

PS我使用的是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'];
Run Code Online (Sandbox Code Playgroud)