如何从用户那里获取带有图像的脸谱相册

时间:2012-07-04 05:38:24

标签: facebook-graph-api facebook-fql fql.multiquery

我正在创建一个Facebook应用程序,我想显示带有封面图像的用户相册,我尝试使用代码#1,但它真的很慢,因为我在foreach中进行了一个facebook api调用,这让我的应用程序占用了永远,所以我正在寻找另一种方法,只需一次api调用并获取所有信息,所以我尝试使用FQL多查询(代码#2),但现在我有一个问题,因为如果专辑没有图像,它赢了什么都不返回,所以请检查我的代码,如果你知道我怎么做,我将非常感谢;)提前感谢所有人!

code#1
$albums = $facebook->api('/me/albums?limit=0&fields=id,name,count,cover_photo');
foreach($albums['data'] as $album)
                {
                // get all photos for album
                $photos = $facebook->api("/{$album['id']}/?fields=picture,name,count");
                $foto = $photos['picture'];
                $nombre = $album['name'];

                $id = $album['id'];
                $count = $album['count'];
                $cover_photo = $album['cover_photo'];
                $nombre = $nombre." (".$count.")";


                echo "<li> <a href=\"album.php?numero_album=$id&nombre_album=$nombre \" title=\"$nombre\"><img src=\"https://graph.facebook.com/{$cover_photo}/\" alt=\"$nombre\" /> </a> </li>";
                }


code#2
$multiQuery = '{
  "albumes":"SELECT name,cover_pid,object_id,size FROM album WHERE owner=me()",
  "portadas":"SELECT src_big FROM photo WHERE pid IN (SELECT cover_pid FROM #albumes)"
        }';

        $param = array(       
     'method' => 'fql.multiquery',       
     'queries' => $multiQuery,       
     'callback' => '');       
        $queryresults = $facebook->api($param);

                foreach($queryresults[0]['fql_result_set'] as $album)
                {
                $nombre = $album['name'];
                $id = $album['object_id'];
                $count = $album['size'];
                $nombre = $nombre." (".$count.")";


                echo "<li> <a href=\"album.php?numero_album=$id&nombre_album=$nombre \" title=\"$nombre\"><img src=\"https://graph.facebook.com/{$cover_photo}/\" alt=\"$nombre\" /> </a> </li>";
                }

1 个答案:

答案 0 :(得分:0)

  

所以我尝试使用FQL多查询(代码#2),但现在我遇到了问题,因为如果专辑没有图像则不会返回任何内容

无法真正看到你的问题。如果我使用Graph API资源管理器尝试您的查询,它会为我提供我的所有相册,以及每张相册的封面照片。 (这是我的4张专辑和3张照片。)

如果您无法确定哪张照片来自哪张相册,那么只需在两个查询中都包含aid字段。

  

真的很慢,因为我在foreach中进行了一次facebook api调用,这让我的应用程序永远占用了

当然可以,因为每个API调用都意味着另一个HTTP请求,那些

如果FQL方法没有提供您想要的内容,那么请将您的API请求发送到batch requests - 这会减少HTTP请求的数量,因此应该可以加快速度。