5

アプリのテスト中に、Graph API エラー #613 (メッセージ: " Calls to mailbox_fql have exceeded the rate of 300 calls per 600 seconds"、タイプ: ) が表示されます。OAuthExceptionこれはデスクトップ アプリであり、唯一のコピーは私のマシンで実行されているものです (したがって、access_tokenユーザーは 1 人、つまり私だけです)。

inbox15 秒ごとに 1 回、エンドポイントにクエリを実行します。組み合わせると、アプリは 1 分あたり約 12 回の API 呼び出しを (さまざまなエンドポイントに対して) 行います。300 番目のスレッドをフェッチする呼び出しで一貫して失敗します (inboxエンドポイントの最初のページには約 25 のスレッドがあり、最初のページのみをフェッチしています)。Graph API への呼び出しをバッチ処理していません。

Objective-C を使用して Mac OS X 10.7 で開発しています。私はNSURLConnection、Graph API を非同期で呼び出していました。私の知る限り、によって処理される各リクエストはNSURLConnection、Facebook の API への 1 つのリクエストのみになるはずです。

上記に進みますが、このエラーが発生する理由を理解するのに苦労しています。inboxこれは、エンドポイントへの 1 回の呼び出し(つまり、URI への呼び出しhttps://graph.facebook.com/me/inbox?access_token=...) が への複数回の呼び出しとしてカウントされるためだと思われmailbox_fqlます。特に、 <n> 個のスレッドを返す単一の呼び出しは、 <n> 個の呼び出しに対してカウントされると思いますmailbox_fql。この場合、mailbox_fqlAPI 呼び出しごとの呼び出し回数を減らす方法はありますか (たとえば、最初のページ全体ではなく、受信ボックス内の最新の <n> スレッドのみをフェッチするなど)?

このトピックに関するドキュメントはかなりまばらであるように見えるので、ほとんど試行錯誤を経てやり遂げなければなりませんでした。他の誰かがこの問題に取り組む方法を知っていれば、私はわくわくします。

4

1 に答える 1

4

編集:limit当然のことながら、結果の数を制限する GET パラメーターを渡すことができることがわかりました。ただし、開発者ブログでは、このアプローチにはいくつかの制限があります (つまり、一部がユーザーに表示されない場合、要求されたよりも少ない結果が返される可能性があります)。

このブログでは、標準の Graph API を呼び出すときに、untiland/orを GET パラメーターとして使用することを推奨しています。sinceこれらのパラメーターは、strtotime()準拠した文字列 (または Unix エポック時間) を取り、それに応じて結果を制限します。

元の答えは次のとおりです。

さらに調査した結果、取得頻度を下げるか、カスタム FQL クエリを使用して、mailbox_fql への呼び出し回数を制限するという選択肢があるようです。標準の Graph API 呼び出しのinboxエンドポイントへの応答を制限する方法を見つけることができませんでした。現在のケースでは、次の形式の FQL クエリを使用しています。

https://graph.facebook.com/fql?q=SELECT <fields> FROM thread WHERE folder_id=1 LIMIT <n>&access_token=...

<fields>コンマで区切られたフィールドのリストです (Facebook のスレッド FQL ドキュメントで説明されています)。エンドポイントthreadに対応するテーブルのリテラル名です。inbox新しいthreadエンドポイントはunified_threadテーブルに対応していますが、まだ公開されていません。folder_id=1受信ボックスを使用することを示します (送信ボックスまたは更新フォルダーとは対照的に)。

実際には、私は 5 に設定しています。これにより、 15 秒の呼び出し間隔を使用すると、10 分間に<n>妥当な 200 回の呼び出しが行われます。mailbox_fql私のテストでは、エラー #613 を受け取っていないので、うまくいくと思います。

ここにいるほとんどの人はすでに FQL の内外をよく知っていると思いますが、私にとっては初めてでした。これが、同様の問題に対処する他の初心者に役立つことを願っています!

于 2011-12-23T23:29:24.277 に答える