-1

私は Facebook アプリを作成していて、カバー画像でユーザーのアルバムを表示したいのですが、コード #1 で試してみましたが、foreach で Facebook API 呼び出しを行うため、アプリが永遠にかかるため、本当に遅いです。 API呼び出しを1回だけ行ってすべての情報を取得する別の方法を探しているので、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>";
                }
4

1 に答える 1

0

だから私はFQLマルチクエリ(コード#2)を試しましたが、アルバムに画像がない場合は何も返されないため、問題が発生しました

そこにあなたの問題が本当に見えません。Graph API エクスプローラーを使用してクエリを実行すると、すべてのアルバムと、アルバムがある各アルバムのカバー写真が表示されます。(つまり、私にとっては 4 枚のアルバムと 3 枚の写真です。)

どちらの写真がどのアルバムのものか分からない場合はaid、両方のクエリにフィールドを含めてください。

foreach で facebook api 呼び出しを行うと、アプリが永遠にかかるため、本当に遅いです

もちろんそうです。各 API 呼び出しは別の HTTP 要求を意味し、それらは遅いためです。

FQL メソッドで期待どおりの結果が得られない場合は、API リクエストをバッチ リクエストにします。これにより、HTTP リクエストの数が減るため、処理速度が大幅に向上します。

于 2012-07-04T10:11:04.310 に答える