2013-01-17 67 views
0

我正在使用github java api,我想了解有關存儲庫及其用戶的信息。我的問題是,我如何授權我的請求才能完全訪問api(5000個請求/小時)。此外,如果有方法可以隨時查看我的應用程序剩餘多少請求,以便不超出api速率限制,那麼這將非常有用。下面的代碼是我現在要做的,但是這個代碼我超出了限制。github java 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()); 

回答

0

OAuthService類是改變用戶的OAuth授權,而不是創建於GitHub的授權的連接!如果您只想獲取有關存儲庫的信息,則不需要此操作。

您應該首先決定是否要使用基本身份驗證(使用用戶名和密碼的身份驗證)或OAuth身份驗證(使用令牌),然後根據您想要的信息從available service classes之一實例化服務對象檢索。

有關存儲庫的信息,這將是:

RepositoryService service = new RepositoryService(); 

然後添加你的授權信息:

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

OR

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

現在,您可以查詢清單存儲庫或做任何事情:

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

爲了得到剩餘的請求,您可以撥打:

service.getClient().getRemainingRequests(); 

這將返回數字包括在你得到了最新response

+0

非常感謝您Jan,但getThmainingRequests方法在GithubClient類中不存在。我錯過了什麼? – fchatzia

+0

這是[絕對有](https://github.com/eclipse/egit-github/blob/master/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/client/ GitHubClient.java)。請確保您使用的是最新版本。 –

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()); 
}