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

时间:2015-11-11 16:57:23

标签: github github-api

我正在构建一个应用程序来获取超过1K github repos的issues and pull requests,就像这样。

$ curl -i "https://api.github.com/repos/user/repo/issues?state=closed"

我的问题是,在最初的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"
}

该文件说我可以使用Authentication向我们注册oauth并获得Client IDClient Secret令牌

来发出5000个请求

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

仍然只有在大约60个请求之后才显示速率限制。

1 个答案:

答案 0 :(得分:5)

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

使用GitHub API时有multiple ways to get authenticated

Basic authentication

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

curl -u your-username "https://api.github.com/repos/user/repo/issues?state=closed"

这将提示您输入密码。

如果您不想使用密码,可以使用personal token

curl -u username:token "https://api.github.com/repos/user/repo/issues?state=closed"

使用个人访问令牌

这是我的最爱,但请确保您不与其他人共享令牌代码。要生成新令牌open this page,您将创建令牌。

然后你可以像这样使用它:

curl "https://api.github.com/repos/user/repo/issues?state=closed&access_token=token"

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

的OAuth

如果要为其他用户实施身份验证,则应使用OAuth。 docs在这方面很好。