Github API使用OAuth访问私有存储库

时间:2013-08-14 21:34:04

标签: ruby-on-rails ruby-on-rails-3 rest github github-api

尝试使用API​​访问我所属的Github组织的私有存储库中的文件。到目前为止尝试了几种不同的方式:

1。如果我使用username/password method -

curl -u "sashafklein:mypassword" https://api.github.com/repos/:org/:repo/git/trees/:file_sha

它工作正常,但我正在尝试从协作的Rails应用程序访问repos,所以我不想公开我的github登录凭据。我想创建一个具有访问权限的虚拟GH帐户并使用这些凭证是可能的,但这绝对不是理想的..

2。所以我查看了API文档中的OAuth2 Secret/Key方法。但它不起作用。如果我使用我的凭据卷曲org repo url作为URL中的参数:

curl -i "https://api.github.com/orgs/:org/repos?private&client_id=<ID>&client_secret=<SECRET>"

只有公开回购出现。这可能是我如何传递params的问题(理论上传递“?private = true”然后返回一个空列表,但列表是相同的并且所有公共存储库),但我正在关注文档。

3。所以我感到沮丧并看了these docs获取OAuth令牌,但我对如何更改它以使其没有用户界面感到困惑 - 即,以便我的应用程序可以自动访问我所属的Github Orgs,而且用户不必特别做任何事情。

任何想法我在尝试2时做错了什么,或者如何让尝试3自动运行?我很难过。

编辑我认为我的client_id / secret是错误的,因为即使我使用Octokit,它也无法访问受保护的回购。我明白这个错吗?就像我一样,我在Github上为我的Rails应用程序创建了一个“应用程序”,我正在尝试使用这些凭据来访问org的私人回购(使用API​​作为贡献者)。

2 个答案:

答案 0 :(得分:1)

如果有人遇到这个问题,这是我找到的解决方案。

显然我的客户端凭据不起作用。我想我不太明白他们的目的是什么。我能够使用它的最简单方法是(即获得我的rails应用程序访问我所属的私人仓库的权限)是使用用户名:密码方法(上面的1)。

因此,使用该应用程序的所有人都无法使用我的个人github凭据,我创建了一个具有访问权限的新虚拟github帐户,该帐户仅用作api凭据。

答案 1 :(得分:0)

我在使用带有C#的Octokit时遇到了同样的问题。经过一番调查后,我发现这是我的令牌权限问题。

令牌具有范围(https://developer.github.com/v3/oauth/#scopes),因此访问您需要的私有存储库&#39; repo&#39;而不是&#39; public_repo&#39;我认为这是默认的。

可以从设置&gt;轻松更改Personal Access tokens&gt;修改