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

0s7z1bwu  于 2023-04-10  发布在  PHP
关注(0)|答案(5)|浏览(398)

现在我把一张照片贴到墙上,像这样:

$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',
   )
);

它工作正常,但我可以以某种方式发布多张照片,像这样的东西:

m4pnthwp

m4pnthwp1#

您现在可以在一篇文章中发布多张图片到您的提要或页面:
对于故事中的每张照片,使用带有参数published=false{user-id}/photos端点上传未发布的照片。
您将为上传的每张照片获得一个ID,如下所示:

{
  "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"}'
  )
);

来源:发布多图故事

编辑:建议解决方案的示例现已发布在此其他链接中。

eni9jsuy

eni9jsuy2#

您可以按此处所述进行批处理请求:https://stackoverflow.com/a/11025457/1343690
但它的简单循环通过您的图像,并直接发布它们。

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

编辑:

(关于墙上照片的分组)
如果某些照片被上传到同一个相册,facebook会自动进行分组。
目前无法通过Graph API在群组中创建相册,目前暂不支持,详见this bug
但是你可以这样做-----------------------------------------------------------------
\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
      )
   );
}

我测试过了,看看结果-

8cdiaqws

8cdiaqws3#

实际上你可以上传一个多故事的照片(我用API和PHP做的),但是如果你需要预定这个帖子,问题就来了。
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'];
yduiuuwa

yduiuuwa4#

你需要先上传每张照片,并将published状态设置为false,然后使用未发布照片的ID到/me/feed端点来安排照片。该计划需要在照片上传后的24小时内,因为facebook会在24小时内删除所有未发布的照片。
参考:https://developers.facebook.com/docs/graph-api/photo-uploads/

wpx232ag

wpx232ag5#

无法在同一个图形API调用中发布多张照片。
参见文档:https://developers.facebook.com/docs/graph-api/reference/user/photos

相关问题