2012-05-02 22 views
8

FacebookがAPI呼び出しを制限する方法について質問があります。この記事の下部に向けてFacebookの5000 Post 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

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

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

  1. あなたは上記1のように、特定のAPI呼び出しのための5000の以上の結果を得ることができますか?

  2. これは最新の5000ですか?したがって、すぐにこの投稿のデータを収集してから10分ごとに新しい好きなものを探すように戻った場合、この方法ですべてのデータを取得できますか?

  3. API呼び出しの制限、または1人のユーザーに送信する結果の数だけ、または特定の投稿などで返される結果の量には制限がありますか?

  4. これは、投稿、タグ付けされたコメント、ページングのようなものに当てはまりますか?

私はこの質問は少しオープンエンドですが、私は答えをすべての場所で見てきましたし、それは十分に文書化されていません知っています。どんな助けも素晴らしいだろうし、将来多くの人がこの情報を参照するかもしれないと思う。

UPDATE:

このAPI呼び出しを実行している:あなたが戻っつの結果を得るため、限界に達し

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

(まあ、少なくともそれに近いです)。誰かがFQLの使用を提案し、それはもっと多くを返すかもしれません。しかし、私はPHPでFQLを使って同じことをやろうとしたが、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人のこのような人」をクリックしてリストをスクロールダウンすると、私も限界に達しました。そのため、FacebookはAPIとFQLの返品を制限するだけでなく、自分のページを制限しています。

なぜ誰かが知っているかどうかを知りたいですか?彼らは一度にキャッシュに5kしか持っていないので、人々が非常に多くの要求でデータベースに当たっていればスケールを処理することはできません。ちょうど推測。

+0

正直言って、データが公開されていても驚いています。少なくとも私はこれが登録されたアプリケーション開発者だけが利用できると思っていますし、ユーザーのプライバシー設定がその特定の開発者に許可されるように設定されている場合でもそうです。 – halfer

+0

すべてのデータが公開されているわけではありませんが、ファンページには公開データがあります。シャキーラのように。 – chantheman

+0

こんにちは@chantheman、あなたはこれを解決しましたか/別の方法を見つけるか? –

答えて

4

悲しいことに、最後の5000個以上のオブジェクトを取得する方法はありません。

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

意図していない可能性があります(おそらく、古いニュースが死んで、簡単に見つからないようにしようとしているかもしれません)。また、あなたがFacebook上で許可されている友人の数と一致しているかもしれません。

+0

答えをありがとう。明確にするために、Shakiraが400,000人の好きな写真を持っているとき、私は最新の5000個しか得ることができません。私は何とか5kを戻すためにオフセットを使用することはできません(私はこれを試して、それを動作させることができませんでした)?ページ管理者からの特定の許可がある場合はどうなりますか?それ以上は得ることができますか? – chantheman

+0

いいえ、Facebookは、多くのサイトと同様、独自のAPIで構築されていないため、このような問題につながります。しかし、本当に400,000人の好きな人がすべて必要な場合は、そのページを削ることができます。私が言ったように、これはおそらく意図的な制限です。 – DanRedux

+0

それは面白いです。多くのアプリケーション開発を制限するようです。私は誰もがこの問題を抱えているかどうか見てみたいと思っていますが、私は2つの解決策しか見ません:1.あなたが言ったようにスクラップ/クローラーを構築する、または2.データを常に保管して最後に収集します。毎回収集するときそこから始めてください。他の誰かがこの問題を抱えているかどうかを知りたい。情報にもう一度感謝します。 – chantheman