8

Facebook が API 呼び出しを制限する方法について質問があります。

この記事の下部: http://developers.facebook.com/blog/post/478/ facebook のコメント:

上記の各テーブルと接続のドキュメントに記載されている制限に加えて、可視性チェックを実行する前にフェッチする結果の最大数が 5,000 であることを知っておくと役立ちます。

このような公開データをどのようにページングするのか疑問に思っています。たとえば、シャキーラを例にとると、彼女はアップロードする写真ごとに非常に多くの「いいね!」を取得します。この API 呼び出しは次のとおりです。

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=0&__after_id=100002349968919

5000いいねで止まる。

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=5000&__after_id=100000881924617

興味深い点の 1 つは、このデータはすべて公開されているため、Facebook にログインしなくても表示できることです。データの使用方法に関するプライバシー ポリシーがあることは知っていますが、それは私の質問ではありません。データが公開されている場合、このデータが何であるか、なぜすべてを取得できないのですか?また、可能であればどのように取得できるのでしょうか?

主な質問は次のとおりです。

  1. 上記のように、特定の API 呼び出しで 5000 を超える結果を取得できますか?

  2. 最近の5000いいねですか?この投稿のデータをすぐに収集し始め、10 分ごとに戻って新しい「いいね!」を探した場合、5000 の制限を回避するこの方法ですべてのデータを取得できるでしょうか?

  3. API呼び出しの制限ですか、それとも1人のユーザーに送信する結果の数だけですか、それとも特定の投稿に対して送り返す結果の量などですか?

  4. これは、タグ付けされた投稿、コメント、ページングなどに適用されますか?

私はこの質問が少し自由回答であることを知っていますが、私は答えを求めてあちこちを見てきましたが、十分に文書化されていません. 今後、多くの人がこの情報を参照する可能性があると思います。

アップデート:

この API 呼び出しを実行する場合:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=4964&__after_id=100000881924617

1 つの結果が返されるため、制限に達します (少なくともそれに近い)。誰かが FQL の使用を提案しましたが、それはより多くを返す可能性があります。しかし、FQL を使用して PHP で同じことを試みたところ、1 レコードしか返されませんでした。

$select = urlencode("SELECT user_id, object_id, post_id FROM like WHERE post_id='5027904559_10150854808869560' LIMIT 1000 OFFSET 4964");
        $fql_query_url = 'https://graph.facebook.com/fql?q=' . $select;
        $fql_query_result = file_get_contents($fql_query_url);
        $fql_query_obj = json_decode($fql_query_result, true);

したがって、これまでのところ、唯一の答えは「いいえ」です。常に 5000 件の結果に制限されています。そして、特定のアクセス許可を持つ特定の access_token が役立つかどうかはわかりません。

Shakira のページにアクセスして「x amount of people like this」をクリックし、リストを下にスクロールし始めると、制限に達しました。つまり、Facebook は API と FQL のリターンを制限しているだけでなく、自社のページも制限しています。

誰かが理由を知っているかどうかを知りたいですか?一度にキャッシュできるのは 5k だけで、非常に多くのリクエストでデータベースにヒットした場合、スケールを処理できませんか? 推測です。

4

1 に答える 1

4

残念ながら、最後の 5000 個以上のオブジェクトを取得する方法はありません。

あなたが言ったように、5000未満だった時からそれを維持し、保管していない限り. :)

それは意図的なものかもしれないし、そうでないかもしれません (おそらく、彼らは古いニュースを死に至らしめ、簡単に見つけられないようにしようとしているのかもしれません)、あるいは Facebook で許可されている 5000 人の友達の数と一致するかもしれません.

于 2012-05-02T21:52:07.903 に答える