web-dev-qa-db-ja.com

Facebook API:(#4)アプリケーションリクエストの制限に達しました

11月下旬以降、Facebook APIのアプリケーション制限に達しています。ユーザーの写真を取得し、25枚の友人の写真を選択します→これは、ユーザーがサインインしたときに行われます(ユーザーのアルバムを作成しています)。

上記のアクションは制限されていますが、11月末まで制限されていません。アルバムから写真を取得するためにバッチ呼び出しを使用しています-制限なしでこの情報を取得するより良い方法はありますか?

ところで、Facebookによると、1日あたり100万件の通話を行っていますが、カウントによると、1日あたり18万件の通話を行っています。

友人の写真なしでユーザーの写真のみを取得することは、私たちの解決策ではありません。

38
Ronny Elkayam

Facebook APIの制限は実際には文書化されていませんが、明らかに次のようなものです: 600秒ごと、トークンごと、IPごとに600コール 。サイトが制限されているため、関連する部分を引用してください:

Facebookプラットフォームチームとのいくつかのテストと議論の後、私が知っている、またはドキュメントで見つけることができる公式の制限はありません。ただし、600秒ごと、トークンごと、およびIPごとに600コールが、それらがあなたを止める場所であることがわかりました。アプリケーションベースのレート制限もいくつか見ましたが、数値はありません。

原則として、1秒間に1回の呼び出しでレートが制限されることはありません。表面的にはこれは非常に制限されているように見えますが、特定の呼び出しをバッチ処理し、サブスクリプションAPIを使用して変更を取得できることを覚えておいてください。

Javascript SDKを介してクライアント側でGraph APIにアクセスできるため、クライアントからの写真のリクエストを旅行する場合、アプリケーションサーバー(一意のID)ではなく、データを取得するユーザー(一意のIDを持つ各ユーザー)であるため、application limitをヒットすることはないと思います。

これは、すべての処理がサーバーを経由する場合、大きなリファクタリングを意味する場合があります。ただし、非常に多くのリクエストがある場合は最適なソリューションのようです(サーバーに息を吹き込むため)。

それ以外の場合は、 batch request を試すことができますが、トラフィックが多い場合はすでにこの方法で進んでいると思います。


Facebookプラットフォームポリシー に従って、これが機能しない場合は、連絡する必要があります。

次のいずれかのしきい値を超えた場合、または超えようとしている場合は、追加の条件が適用される可能性があるため、 お問い合わせください :(> 5M MAU)または(> 100M API calls per day)または(> 1日あたり5,000万インプレッション)。

36
Simon Boudrias

Facebook "Graph API Rate Limiting" docs は、コード#4のエラーが アプリレベルのレート制限 であり、 serレベルレート制限 。正確な数値は示していませんが、アプリレベルのレート制限は次のように説明されています。

このレート制限は、アプリレベルでグローバルに適用されます。広告API呼び出しは除外されます。

  • レート制限は、スライディングウィンドウで過去1時間リアルタイムで発生します。
  • 統計は、行われた呼び出しとクエリの数、消費されたCPU時間、各アプリで使用されたメモリについて収集されます。
  • 各リソースには制限があり、特定のアプリの月間アクティブユーザー数に乗算されます。
  • アプリが許可されたリソース以上を使用すると、エラーがスローされます。
  • エラー、コード:4、メッセージ:アプリケーション要求の制限に達しました

ドキュメントは、レート制限を回避するための推奨事項も提供します。アプリレベルの制限については、次のとおりです。

推奨事項:

  • エラーコード(4)を確認して、調整の種類を確認します。
  • 呼び出しのバーストをしないでください、一日中呼び出しを広げます。
  • データ(重要なデータ、重複していないデータなど)のスマートフェッチを実行します。
    • リアルタイムのインサイト、最小限のリクエストで、できるだけ多くのページ投稿のインサイトを読むことができるように、API呼び出しが構造化されていることを確認してください。
    • ユーザーフィードを2回取得しないでください(2人のアプリユーザーが特定の友人を共有している場合)
    • 友だちの数が250を超える場合は、すべてのユーザーの友だちフィードを連続して取得しないでください。取得を別の日に分けてください。オプションとして、最初にアプリユーザーのニュースフィード(me/home)を取得して、アプリユーザーにとって重要な友達を検出します。次に、それらの友達のフィードを最初に取得します。
  • 「since」、「until」、「limit」のパラメーターを使用して、要求を制限/フィルターすることを検討してください
  • ページ関連の呼び出しでは、リアルタイム更新を使用してデータの変更をサブスクライブします。
  • フィールド拡張により、複数のグラフクエリを1回の呼び出しにトン「結合」できます。
  • 最後のチェック以降にデータクエリが変更されたかどうかをチェックするEtags
  • 大規模なユーザーベースを持たないページ管理デベロッパーの場合、ページの管理者にアプリを許可してユーザー数を増やしてもらいます。

最後に、ドキュメントは次の情報ヒントを提供します。

  • 呼び出しをバッチ処理しても、API呼び出しの数は減りません。
  • 並列呼び出しを行っても、API呼び出しの数は減りません。
16
Jesse Webb

1時間あたり200コールを制限するアプリケーションレベルのレート!

この画像を見ることができます。 enter image description here

0