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 должен автоматически объединить эти картинки в единый пост (если интервал между ними менее минуты), но на практике этого не происходит. Подскажите, пожалуйста, как это можно сделать?
  • Вопрос задан
  • 11171 просмотр
Решения вопроса 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
постишь сразу три поста с разными фото и одним и тем же текстом, тогда выходит стак фото (тестировал для пользователя, для страницы вроде не работает).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект