Использование пакетного запроса в PHP SDK для получения обложек альбомов Facebook
Я использую PHP SDK через Batch Request (чтобы быстрее получить обложки всех альбомов). Работает нормально, но картинки, которые я получаю, - это не обложки альбомов, а отдельные картинки разных размеров.
$albums_resp = $facebook->api('/'.$fbid.'/albums','GET');
$albums = $albums_resp['data'];
//prepare batch query for album covers
$queries = array ();
foreach ($albums as $album)
{
if ($album['cover_photo'] != null)
{
$query = array('method' => 'GET', 'relative_url' => $album['cover_photo']);
array_push($queries, $query);
}
}
$queries_str = json_encode($queries);
$batchResponse = $facebook->api('?batch='.$queries_str, 'POST');
Я знаю, что есть другой способ, используя URL /{albumID}/picture?type=small
как указано здесь, но я все еще не могу получить те же размеры изображения, которые показывает Facebook в обложках (я пытался thumbnail
, small
, cover
), и когда я использую этот подход в пакетном запросе для всех альбомов, у меня, кажется, нет никакого способа соотнести ответ с идентификатором альбома. В ответ я получаю статус перенаправления 302 с расположением изображения.
Я не хочу размещать ссылки на изображения напрямую /{albumID}/picture?type=small
либо потому, что если имеется 25 альбомов, это означает 25 перенаправлений изображений, что делает страницу медленной.
1 ответ
В конце концов, я использовал cover_photo
Идентификатор, чтобы получить полную информацию об изображении (которая включает в себя URL-адреса изображения разных размеров, а также сам идентификатор) и сопоставил его с идентификатором обложки альбома.
$cover_photos = array();
foreach ($batchResponse as $cover_photo_resp)
{
if ($cover_photo_resp['code'] == 200)
{
$cover_photo = json_decode($cover_photo_resp['body'], true);
$cover_photos[$cover_photo['id']] = $cover_photo;
}
}
//correlate the cover photos with the respective albums, according to the cover photo ID
for ($i = 0; $i < count($albums); $i++)
{
$albums[$i]['cover_photo_obj'] = $cover_photos[$albums[$i]['cover_photo']];
}
То, что вы в конечном итоге, это $albums[]
массив ассоциативных массивов, каждый с дополнительным полем в каждом альбоме, ссылаясь на cover_photo_obj
Объект со всей информацией о фотографии на обложке.