1

我正在通过批处理请求使用 PHP SDK(以便更快地获取所有专辑的封面)。它工作正常,但我得到的图片不是专辑封面,而是各种裁剪尺寸的单张图片。

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

我知道还有另一种方法可以使用此处/{albumID}/picture?type=small所示的 URL,但我仍然无法获得 facebook 在封面中显示的相同图像大小(我尝试过, , ),当我在对所有专辑的批量请求中使用这种方法时,我似乎没有任何方法可以将响应与专辑 ID 关联起来。我得到的响应是带有图像位置的重定向状态 302。thumbnailsmallcover

我也不想直接放图片链接/{albumID}/picture?type=small,因为如果有 25 个相册,这意味着 25 个图片重定向,使页面变慢。

4

1 回答 1

1

我最终所做的是使用cover_photoID 获取完整的图像信息(包括不同大小的图像的 URL 以及 ID 本身)并将其与专辑的封面照片 ID 相关联。

$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包含有关封面照片的所有信息的对象。

于 2013-04-26T23:34:31.643 回答