在PHP SDK中使用批处理请求获取Facebook相册封面

在PHP SDK中使用批处理请求获取Facebook相册封面,facebook,facebook-php-sdk,facebook-batch-request,Facebook,Facebook Php Sdk,Facebook Batch Request,我通过批处理请求使用PHPSDK(这样可以更快地获得所有相册的封面)。它的工作很好,但我得到的图片不是专辑封面,而是各种裁剪尺寸的个人图片 $albums_resp = $facebook->api('/'.$fbid.'/albums','GET'); $albums = $albums_resp['data']; //prepare batch query for album covers $queries = array (); foreach ($albums as $a

我通过批处理请求使用PHPSDK(这样可以更快地获得所有相册的封面)。它的工作很好,但我得到的图片不是专辑封面,而是各种裁剪尺寸的个人图片

$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在封面中显示的相同大小的图像(我尝试了
缩略图
small
封面
),当我在所有相册的批处理请求中使用此方法时,我似乎没有任何方法将响应与相册ID关联。我得到的响应是重定向状态302与图像的位置


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

我最后做的是使用
封面照片
ID来获取完整的图像信息(包括不同大小的图像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']]; 
}
$cover_photos=array();
foreach($batchResponse作为$cover\u photo\u resp)
{   
如果($cover_photo_resp['code']==200)
{
$cover_photo=json_decode($cover_photo_resp['body',true);
$cover_photos[$cover_photos['id']]=$cover_photos;
}
}
//根据封面照片ID,将封面照片与相应的相册关联
对于($i=0;$i

你最终得到的是一个关联数组的
$albums[]
数组,每个相册中都有一个额外的字段,用于引用包含封面照片所有信息的
封面照片对象。

我最后做的是使用
封面照片
ID来获取完整的图像信息(包括不同大小的图像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']]; 
}
$cover_photos=array();
foreach($batchResponse作为$cover\u photo\u resp)
{   
如果($cover_photo_resp['code']==200)
{
$cover_photo=json_decode($cover_photo_resp['body',true);
$cover_photos[$cover_photos['id']]=$cover_photos;
}
}
//根据封面照片ID,将封面照片与相应的相册关联
对于($i=0;$i

您最终得到的是
$albums[]
关联数组的数组,每个相册中都有一个额外的字段,引用包含封面照片所有信息的
封面照片对象。

现在工作正常吗?我需要使用它。是的。刚刚发布了我为解决此问题而创建的代码。现在工作正常吗?我需要使用它。是的。刚刚发布了我创建的代码要解决此问题,可以使用索引在同一foreach循环中设置封面照片。示例foreach($i=>$cover\u photo\u resp)可以使用索引在同一foreach循环中设置封面照片。示例foreach($i=>$cover\u photo\u resp的batchResponse)