注意:请考虑生成 GitHub App 而不是 OAuth app。 使用安装访问令牌的 GitHub Apps 的速率限制随存储库数和组织用户数而缩放。 相反,OAuth apps 的速率限制较低,并且无法缩放。 有关详细信息,请参阅“GitHub 应用和 OAuth 应用之间的差异”和“关于创建 GitHub 应用”。
关于 OAuth apps 的速率限制
GitHub 对 OAuth app 在特定时间段内可以发送到服务器的请求数设置限制。 此限制有助于防止滥用和拒绝服务攻击,并确保系统仍可供所有用户使用。
GitHub 可能会向某些操作应用其他辅助速率限制来确保 API 可用性。 可以遵循最佳做法并遵守下面列出的速率限制准则来避免辅助速率限制。 有关辅助速率限制的详细信息,请参阅“使用 REST API 的最佳做法”和“REST API 中的资源”。
OAuth apps 在用户授权应用后使用用户访问令牌发出请求,从而代表用户执行操作。 来自 OAuth apps 的用户访问令牌请求使用 OAuth 令牌进行身份验证。 有关详细信息,请参阅“授权 OAuth 应用”。
确定 OAuth app 的速率限制
你可以在任何时候使用 REST API 确认你当前的速率限制状态。 有关详细信息,请参阅“REST API 中的资源”。
OAuth apps 可能会在执行以下两项操作时遇到速率限制:
- 登录用户时。
- 进行 API 调用时。
OAuth apps 应始终缓存其令牌,并且很少需要登录用户。 反复登录用户可能表明存在 bug,最常被视为应用和 GitHub 之间的无限循环。 如果应用在一小时内使用户登录十次,则同一小时内的下一次登录将需要对该应用程序重新授权。 这确保用户知道应用正在构建大量令牌,并且中断可能会发生的无限循环。 这 10 _个登录_速率限制不同于为 OAuth apps 强制执行的 10 个_令牌_限制。 有关 10 个令牌限制的信息,请参阅“授权 OAuth 应用”。
OAuth apps 还限制为每个经身份验证的用户每小时 5,000 个请求。 来自用户授权的 OAuth apps 或用户拥有的 personal access token 的所有请求,以及使用任何用户的身份验证凭据进行身份验证的请求,都共享该用户每小时 5,000 个请求的相同配额。
如果符合以下两项,则 OAuth apps 受制于每个经身份验证的用户每小时 15,000 个请求的更高限制:
- 请求来自由 GitHub Enterprise Cloud 组织拥有或批准的 OAuth app。
- 经过身份验证的用户是 GitHub Enterprise Cloud 组织的成员。
有关速率限制的详细信息,请参阅 REST API 文档中的“REST API 中的资源”和“速率限制”。
延伸阅读
- GraphQL API 文档中的“Rate limits and node limits for the GraphQL API”