3
{
        "query1": "SELECT aid, cover_pid, name, created FROM album 
            WHERE owner = 166125753465316  AND name != \'Wall Photos\' ORDER BY created DESC LIMIT 3",

        "query2": "SELECT pid, src, src_small, src_big, caption FROM photo 
            WHERE aid IN (SELECT aid FROM #query1)  ORDER BY created DESC LIMIT 5"
}

在上面的 $queries 中,然后:

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

            var_dump($fqlResult);

返回一个空数组?我做错了什么?

我想抓取 owner =... 的相册,并从每个相册中获取 5 张照片。

我可以用单个查询来做到这一点,但是页面加载确实需要很长时间!

4

4 回答 4

1

我刚刚尝试了这个,并替换me()了您查询中的 ID,它可以工作。当我尝试查找您的 ID 166125753465316 时,它会引发“不支持的获取请求错误”。这可能是你的问题。

我能够使用您评论中的 PAGE_ID 以及有效的用户或应用访问令牌来获取数据。

其他一些评论:您应该使用object_id而不是aidand pid。这些将被弃用。

其次,此查询将仅返回您返回的三个相册中的 5 张最近的照片。要每人获得 5 张照片,您需要执行以下操作:

{
    "albums": "SELECT object_id, cover_object_id, name, created FROM album 
        WHERE owner = me()  AND type != 'wall' ORDER BY created DESC LIMIT 3",

    "album1": "SELECT object_id, src, src_small, src_big, caption FROM photo 
        WHERE album_object_id IN (SELECT object_id FROM #albums LIMIT 1 OFFSET 0)
        ORDER BY created DESC LIMIT 5",

    "album2": "SELECT object_id, src, src_small, src_big, caption FROM photo 
        WHERE album_object_id IN (SELECT object_id FROM #albums LIMIT 1 OFFSET 1)
        ORDER BY created DESC LIMIT 5",

    "album3": "SELECT object_id, src, src_small, src_big, caption FROM photo 
        WHERE album_object_id IN (SELECT object_id FROM #albums LIMIT 1 OFFSET 2)
        ORDER BY created DESC LIMIT 5"

}
于 2012-09-06T00:11:47.403 回答
1

你试过这个graph api query -
USER_ID?fields=albums.fields(name,photos.limit(5).fields(id,name),id,cover_photo,created_time)
这来自最近引入的graph api字段扩展功能 - https://developers.facebook.com/docs/reference/api/field_expansion/

于 2012-09-05T21:49:10.113 回答
1

在这种情况下,我认为您不需要多查询,您只需像这样更改

SELECT pid, src, src_small, src_big, caption FROM photo 
     WHERE aid IN (SELECT aid FROM album  WHERE owner = me()  ORDER BY created DESC )  
     ORDER BY created DESC LIMIT 5

你也可以使用这个 GRAPH API

me?fields=albums.fields(cover_photo,created_time,photos.limit(5).fields(link))

这是链接

http://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Dalbums.fields%28cover_photo%2Ccreated_time%2Cphotos.limit%285%29.fields%28link%29%29

于 2012-09-02T10:27:04.270 回答
1

尝试删除查询中的换行符,只需使用空格作为分隔符。

试试这个编辑过的fql

{
    "query1": "SELECT aid, cover_pid, name, created FROM album WHERE owner = 166125753465316 AND name != \'Wall Photos\' ORDER BY created DESC LIMIT 3",
    "query2": "SELECT pid, src, src_small, src_big, caption FROM photo WHERE aid IN (SELECT aid FROM #query1)  ORDER BY created DESC LIMIT 5"
}
于 2012-09-12T05:59:06.180 回答