4

グラフAPIで返品の問題が発生していますが、その理由や修正方法を知っている人がいるかどうか疑問に思っています。

特定のユーザーのすべての写真データをダウンロードする必要があります(アクティブユーザーではなく、友達データ)。これが私が試した2つのことです。

FQL: "select pid from photo where subject=friend_uid"
Graph: "friend_uid/photos?fields=picture,created_time,tags.fields(name,id)&limit=1000"

私はfriends_photosとuser_photosの権限を持っています。

タグが1000を超えるユーザーは、結果の数が大幅に減少します。たとえば、200枚程度の写真しか返されませんが、これは受け入れられません。すべての写真が必要です。

since / until(またはcreated_time<または>__)とlimit句を使用したチャンク化は、FQLの結果カウントを改善するだけですが、チャンク化の量によって非常に非効率になります。

何か案は?タグデータも私の目的にとって重要です。

したがって、FQLまたはgraph-apiのいずれかを使用して、特定のuser_idのすべての写真のすべてのタグデータを取得するには、適切なクエリまたはクエリのシーケンスが必要です。

4

1 に答える 1

3

私は最近、PHPで同様のプロジェクトを作成しました(Facebookのすべての友達からすべての写真を順番に取得します)。Facebookの制限は十分に文書化されていませんが、Graph APIを使用すると、友達がタグ付けされた400枚の写真と、友達がリクエストごとにアップロードした5000枚の写真であることがわかりました。{user} / photosからプルすると、タグ付けされた写真のみがプルされますが、{user} / photos / uploadedは、{user}がアップロードした写真のみをプルすることに注意してください。私の状況では、タグ付けされた400枚の写真とアップロードされた5000枚の写真で十分だと思いました。

追加の写真が必要な場合は、/ photosリクエストに対してユーザーに返された写真の数を確認し、400に等しいかどうかを確認する必要があります。必要な場合は、再帰的に次のページに進む必要があります。

/ photos / uploadedリクエストの場合、Facebookはカーソルベースのページ付けを使用します(このページの下部を参照)。つまり、ページ付け->次およびページ付け->前のデータは、返す値がさらにある場合にのみ送信されます。これにより、次のページを取得するのがかなり簡単になります(もう一度、これを再帰的に実行する必要があります)。

于 2013-02-19T23:37:52.520 に答える