Github API:过早提取超出速率限制的问题

arb*_*115 4 github github-api

我正在构建一个可获取问题并提取超过1K github存储库请求的应用程序,就像这样。

$ curl -i "https://api.github.com/repos/user/repo/issues?state=closed"
Run Code Online (Sandbox Code Playgroud)

我的问题是,在最初的60次迭代之后,我遇到了速率限制错误:

{
    "message": "API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
    "documentation_url": "https://developer.github.com/v3/#rate-limiting"
}
Run Code Online (Sandbox Code Playgroud)

该文件说,我可以使用高达5000个请求验证这一点我注册了一个OAuth并获得Client IDClient Secret令牌

https://api.github.com/repos/{repo.name}/issues?client_id=...&client_secret=...

速率限制仍然仅在大约60个请求后才会显示。

Ion*_*zău 7

就像您观察到的那样,公共GitHub API请求限制为60个/小时/ ip。这就是为什么您需要身份验证。

使用GitHub API时,有多种方法可以进行身份​​验证

基本认证

基本上,您提供用户名和密码。

curl -u your-username "https://api.github.com/repos/user/repo/issues?state=closed"
Run Code Online (Sandbox Code Playgroud)

这将提示您输入密码。

如果您不想使用密码,则可以使用个人令牌

curl -u username:token "https://api.github.com/repos/user/repo/issues?state=closed"
Run Code Online (Sandbox Code Playgroud)

使用个人访问令牌

这是我的最爱,但请确保您不与他人共享令牌代码。要生成新令牌,请打开此页面,您将创建令牌。

然后,您可以像这样使用它:

curl "https://api.github.com/repos/user/repo/issues?state=closed&access_token=token"
Run Code Online (Sandbox Code Playgroud)

token用您的令牌代码替换网址末尾的代码段)

OAuth

如果要对其他用户实施身份验证,则应使用OAuth。该文档在这个方向上很好。