注: OAuth app の代わりに GitHub App をビルドするのを考慮します。 インストール アクセス トークンを使う GitHub Apps のレート制限は、リポジトリの数と組織のユーザーの数に応じてスケーリングされます。 逆に、OAuth apps のレート制限は低く、スケーリングされません。 詳細については、「GitHub Apps と OAuth アプリの違い」および「GitHub App の作成について」を参照してください。
OAuth apps のレート制限について
GitHub は、OAuth app が一定の時間内にサーバーに送信できる要求の数に制限を設けます。 この制限は、不正使用やサービス拒否攻撃を防ぐのに役立ち、すべてのユーザーがシステムを使用できるようにします。
OAuth apps は、ユーザーがアプリを承認した後、ユーザー アクセス トークンを使って要求を行うことで、ユーザーに代わって動作します。 OAuth apps からのユーザー アクセス トークン要求は、OAuth トークンを使って認証されます。 詳しくは、「OAuth アプリの承認」を参照してください。
OAuth app のレート制限を決定する
現在のレート制限の状態は、いつでも REST API を使って確認できます。 詳しくは、「REST API のリソース」を参照してください。
OAuth apps では、次の 2 つのアクション中にレート制限が発生する可能性があります。
- ユーザーのサインイン時。
- API 呼び出しを行うとき。
OAuth apps は常にトークンをキャッシュする必要があり、ユーザーをサインインさせる必要はほとんどありません。 ユーザーが繰り返しサインインする場合はバグの兆候である可能性があり、最も一般的に見られるのはアプリと GitHub の間の無限ループです。 アプリが 1 時間以内にユーザーに 10 回サインインした場合、同じ時間内の次のサインインでは、アプリケーションの再承認が必要になります。 これにより、ユーザーはアプリが非常に多くのトークンを生成していることを認識できるようになります。それ以外の場合は、無限ループになる可能性がある部分にブレークを挿入します。 この 10 回の_サインイン_レート制限は、OAuth apps にも適用される 10 _トークン_の制限とは異なります。 10 トークンの制限については、「OAuth アプリの承認」を参照してください。
またOAuth apps は、認証したユーザーあたり 15,000 件/時に制限されます。 ユーザーによって、またはユーザーが所有している personal access token によって認可されている OAuth apps からのすべての要求と、ユーザーの認証資格情報のいずれかで認証された要求は、そのユーザーについて 1 時間あたり 15,000 件の同じクォータを共有します。
参考資料
- GraphQL API ドキュメントの「Rate limits and node limits for the GraphQL API」