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

クエリで改行を削除してみてください。区切り文字としてスペースを使用してください。

この編集された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 に答える
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

me()これを試してみましたが、クエリの IDを置き換えると機能します。ID 166125753465316 を検索しようとすると、「サポートされていない取得要求エラー」がスローされます。これはあなたの問題かもしれません。

有効なユーザーまたはアプリ アクセス トークンを使用して、コメントの PAGE_ID を使用してデータを取得できました。

その他のコメント: と のobject_id代わりに使用する必要がaidありpidます。これらは非推奨になる予定です。

次に、このクエリは、返された 3 つのアルバムから最新の 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

このグラフ API クエリを試しましたか -
USER_ID?fields=albums.fields(name,photos.limit(5).fields(id,name),id,cover_photo,created_time)
これは、最近導入されたグラフ API フィールド拡張機能に由来します - https://developers.facebook.com/docs/reference/api/field_expansion/

于 2012-09-05T21:49:10.113 に答える