私はあなたが見つけることができるFacebookのサンプルページを(再び)機能させようとしています ここ 。次のエラーが発生します:
Fatal error: Uncaught OAuthException: (#4) Application request limit reached thrown in C:\wamp\www\base_facebook.php on line 988
私はこれをグーグルで検索しましたが、概説されている手順を使用することで問題を簡単に修正できるようです ここ 。ただし、facebook.com/Insightsにアクセスすると、アプリケーションが一覧表示されません(ログインしています)。
奇妙な部分は、[開発者]> [アプリ]からアプリに移動すると、アプリのページに移動して[インサイト]をクリックできることです。これにより、アプリのインサイトページが表示されます...しかし、診断セクションはどこにも見つかりません。誰か助けてもらえますか?
これが発生する理由を見つけるための概要は次のとおりです。
Insights
セクションが表示されるまで下にスクロールし、See All
をクリックします。API > Activity & Errors
を選択します。Facebook "Graph API Rate Limiting" docs は、コード#4
のエラーは アプリレベルのレート制限 であり、 serレベルレート制限 。正確な数値は示されていませんが、アプリレベルのレート制限は次のように説明されています。
このレート制限は、アプリレベルでグローバルに適用されます。広告API呼び出しは除外されます。
- レート制限は、過去1時間、スライディングウィンドウでリアルタイムに発生します。
- 統計は、行われた呼び出しとクエリの数、費やされたCPU時間、各アプリで使用されたメモリについて収集されます。
- 各リソースには、特定のアプリの月間アクティブユーザーを掛けたものに制限があります。
- アプリが許可されたリソースを超えて使用すると、エラーがスローされます。
- エラー、コード:4、メッセージ:アプリケーションリクエストの制限に達しました
ドキュメントには、レート制限を回避するための推奨事項も記載されています。アプリレベルの制限については、次のとおりです。
推奨事項:
- エラーコード(4)を確認して、スロットルタイプを確認してください。
- 急いで電話をかけないでください。1日を通して電話を広げてください。
- データ(重要なデータ、重複していないデータなど)のスマートフェッチを実行します。
- リアルタイムのインサイト。最小限のリクエストで、できるだけ多くのページ投稿のインサイトを読み取ることができるようにAPI呼び出しが構造化されていることを確認してください。
- ユーザーフィードを2回フェッチしないでください(2人のアプリユーザーに特定の友達が共通している場合)
- 友達の数が250を超える場合は、すべてのユーザーの友達フィードを連続してフェッチしないでください。フェッチを異なる日に分けてください。オプションとして、アプリユーザーにとってどの友達がより重要であるかを検出するために、最初にアプリユーザーのニュースフィード(me/home)をフェッチします。次に、それらの友達フィードを最初にフェッチします。
- 次のパラメータを使用してリクエストを制限/フィルタリングすることを検討してください:「since」、「until」、「limit」
- ページ関連の呼び出しの場合、リアルタイム更新を使用してデータの変更をサブスクライブします。
- フィールド拡張により、1つの呼び出しに複数のグラフクエリを「結合」することができます。
- 前回のチェック以降にデータクエリが変更されたかどうかをチェックするためのEtags。
- 大規模なユーザーベースを持たないページ管理開発者の場合は、ページの管理者にアプリを受け入れてもらい、ユーザー数を増やします。
最後に、ドキュメントには次の情報のヒントが記載されています。
- 呼び出しをバッチ処理しても、API呼び出しの数は減りません。
- 並列呼び出しを行っても、API呼び出しの数は減りません。
Access_tokenを必要としないFBグラフAPIエンドポイントの1つにGETリクエストを行う場合、それをリクエストパラメータに含めないことを意味するわけではありません。 FBのドキュメントにあるように、FBサーバー側よりもaccess_tokenを含めないようにすると、サーバーマシンに登録されます。したがって、制限(正確にいくらでも)は非常に簡単に達成できます。ただし、ユーザーアクセストークンをリクエスト(&access_token = XXXXXX)に入れると、リクエストは特定のユーザーに登録されるため、制限に達することはほとんどありません。ユーザーaccess_tokenの有無にかかわらず1000件のリクエストを行う簡単なスクリプトでテストできます。
注:同じ問題が発生するため、FBアプリアクセストークンでは不十分です。リクエストはアプリaccess_tokenに登録され、access_tokenなしでリクエストを行うのと同じ状況になります。