【问题标题】:Using Batch request in PHP SDK to get Facebook Album Covers在 PHP SDK 中使用批量请求获取 Facebook 专辑封面
【发布时间】:2013-04-27 07:34:31
【问题描述】:

我正在通过 Batch Request 使用 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');

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

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

【问题讨论】:

  • 现在工作正常吗?我需要用这个。
  • 是的。刚刚发布了我为解决这个问题而构建的代码。

标签: facebook facebook-php-sdk facebook-batch-request


【解决方案1】:

我最后做的是使用cover_photo 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']]; 
}

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

【讨论】:

  • 您可以使用索引在同一个foreach循环中设置封面照片。示例 foreach ($batchResponse as $i=>$cover_photo_resp)
猜你喜欢
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多