RedOctoberCZ
@RedOctoberCZ

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

Здравствуйте, коллеги!

В настоящий момент я делаю пост картинки на стену примерно так:

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

Всё работает прекрасно, но хотелось бы узнать, как можно постить несколько картинок разом? Что-то вроде этого:

0761e795eadd4680b12ee6cd52756462.jpg

На stackoverflow посоветовали просто постить каждую картинку отдельным API вызовом, и Facebook должен автоматически объединить эти картинки в единый пост (если интервал между ними менее минуты), но на практике этого не происходит. Подскажите, пожалуйста, как это можно сделать?
  • Вопрос задан
  • 9753 просмотра
Решения вопроса 1
RedOctoberCZ
@RedOctoberCZ Автор вопроса
В общем, чтобы запостить несколько фотографий в группу - нужно создать альбом в группе. Альбом в группе невозможно создать при помощи API, причём это известный баг, но его не спешат исправлять :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
webrider
@webrider
PM, PHP-developer
В общем так.
Для того, чтобы сделать пост с несколькими фотографиями нужно делать следующее:
$fb = new Facebook\Facebook([
			'app_id'  => $app_id,
			'app_secret' => $app_secret,
			'default_graph_version' => 'v2.4',
		]);
$images = ['http://site.ru/img1.jpg', 'http://site.ru/img2.jpg', 'http://site.ru/img3.jpg'];
$token = 'ВАШ ТОКЕН';
$group_id = 'ID группы';
$attached['message'] = 'Текст поста'; 
$i = 0;

foreach ($images as $image) { 
$response = $fb->post('/me/photos', [
	'url' => $image,
	 'published' => 'false' #Дабы они не появлялись на стене
], $token);
$graphNode = $response->getGraphNode();
 $attached['attached_media[' . $i . ']'] = '{"media_fbid":"' . $graphNode['id'] . '"}';
$i++;
}
#Далее, собственно, сам пост
$response = $fb->post("/{$group_id}/feed", $attached, $token);


Всех благ
Ответ написан
copyloc
@copyloc
Человек то я не глупый, просто притворяюсь
А массивом несколько URL? Я не уверен, просто мое предположение. Что-то типа:
$str = "ссыль1,ссыль2,ссыль3"; 
  $url = explode(",",$str);

А потом фором вытащить:
for($i = 0; $i < count($url); $i++) 
  { 
     echo $url[$i]." "; 
  }

И получится перечисления ссылок
Ответ написан
@barabylia
постишь сразу три поста с разными фото и одним и тем же текстом, тогда выходит стак фото (тестировал для пользователя, для страницы вроде не работает).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 нояб. 2020, в 00:27
500 руб./в час
25 нояб. 2020, в 23:13
1000 руб./за проект
25 нояб. 2020, в 22:43
800 руб./в час