Как опубликовать несколько фотографий через API Facebook

Теперь я отправляю одну фотографию на стену следующим образом:

$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

Спасибо заранее!

Ответ 1

Вы можете выполнять пакетные запросы, как указано здесь: fooobar.com/questions/699531/...

Но его просто прокрутить изображения и опубликовать их напрямую.

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


Изменить:

(относительно группировки фотографий на стене)

Эта группировка выполняется facebook автоматически, если некоторые фотографии загружаются в тот же альбом.

В настоящее время вы не можете создать альбом в группе через Graph API - он не поддерживается (на данный момент), см. эта ошибка.

Но вы можете сделать это - создать альбом вручную, затем получить 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

Теперь вы можете публиковать несколько изображений в одном сообщении в своем канале или на странице:

Для каждой фотографии в истории загрузите ее без публикации с помощью конечной точки {user-id}/photos с аргументом published=false.

Вы получите идентификатор для каждой загруженной вами фотографии следующим образом:

{
  "id": "10153677042736789"
}

Публикация многофайловой истории с использованием конечной точки {user-id}/feed и использование идентификаторов, возвращаемых путем загрузки фотографии

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

Источник: Публикация многофайловой истории

Ответ 3

На самом деле вы можете загрузить многоэтажную фотографию (я сделал это с помощью Graph 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'];

Ответ 4

Сначала вам нужно будет загрузить каждую фотографию с опубликованным состоянием в false, а затем использовать идентификатор неопубликованных фотографий в конечную точку /me/feed для планирования фотографии. Расписание должно быть в течение 24 часов с момента загрузки фотографий, поскольку Facebook удаляет все неопубликованные фотографии в течение 24 часов.

Ссылка: https://developers.facebook.com/docs/graph-api/photo-uploads/