0

我正在使用 github java api,我想获取有关存储库及其用户的信息。我的问题是如何授权我的请求才能完全访问 api(5000 个请求/小时)。此外,如果有办法随时查看我的应用程序还有多少请求,以免超出 api 速率限制,那将是非常有益的。下面的代码是我现在所做的,但是使用此代码我超出了速率限制。

    this.username = ConfigurationParser.parse("username");
    this.password  = ConfigurationParser.parse("password");
    OAuthService oauthService = new OAuthService();
    oauthService.getClient().setCredentials(this.username, this.password);
    Authorization auth = new Authorization();
    try {
        auth = oauthService.createAuthorization(auth);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(auth.getApp().getName());

    service.getClient().setOAuth2Token(auth.getToken());
4

2 回答 2

0

您可以使用jcabi-github(我是它的开发人员之一),它会为您完成所有身份验证工作:

Github github = new RtGithub("user", "password");

现在您有了一个可以帮助您操作 Github 实体的客户端,例如,您可以列出给定存储库中的所有问题:

Coordinates coords = new Coordinates.Simple("jcabi/jcabi-github");
Repo repo = github.repos().get(coords);
for (Issue issue : repo.issues().iterate(Collections.<String, String>emptyMap())) {
  System.out.println("Issue found: #" + issue.number());
}
于 2014-02-19T03:30:19.553 回答
0

OAuthService类用于更改用户的OAuth 授权,而不是用于创建与 GitHub 的授权连接!如果您只想获取有关存储库的信息,则不需要它。

您应该首先决定是要使用基本身份验证(带有用户名和密码的身份验证)还是 OAuth 身份验证(使用令牌),然后根据您要检索的信息从可用服务类之一实例化服务对象.

对于存储库信息,这将是:

RepositoryService service = new RepositoryService();

然后添加您的授权信息:

service.getClient().setCredentials("user", "passw0rd");

或者

service.getClient().setOAuth2Token("your_t0ken");

现在您可以查询存储库列表或执行其他任何操作:

List<Repository> repositories = service.getRepositories();

要获取剩余的请求,您可以调用:

service.getClient().getRemainingRequests();

这将返回您收到的最新响应中包含的数字。

于 2013-01-17T17:11:17.827 回答