3

尝试使用 API 访问我是其成员的 Github 组织的私有存储库中的文件。到目前为止尝试了几种不同的方法:

1.如果我使用用户名/密码方法--

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

它工作正常,但我正在尝试从协作 Rails 应用程序访问存储库,所以我不想公开我的 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>"

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

3.所以我很沮丧,并查看了这些文档以获取 OAuth 令牌,但我对如何更改它以便没有用户界面感到困惑——即,我的应用程序可以自动访问 Github 组织我是其中的一员,它的用户无需做任何特别的事情。

任何想法我在尝试 2 中做错了什么,或者如何让尝试 3 自动工作?我很困惑。

编辑我认为我的 client_id/secret 是错误的,因为即使我使用 Octokit,它也无法访问受保护的存储库。我理解错了吗?和我一样,我在 Github 上为我的 Rails 应用程序创建了一个“应用程序”,我正在尝试使用这些凭据通过 API 访问组织的私有存储库(我是其中的贡献者)。

4

2 回答 2

1

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

显然我的客户端凭据不起作用。我想我不太明白它们的用途。我可以让它工作的最简单方法(即,获得我的 rails 应用程序访问我是其成员的私有存储库的权限)是使用用户名:密码方法(1,上面)。

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

于 2013-08-15T04:28:21.003 回答
0

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

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

这可以从设置>个人访问令牌>编辑轻松更改

于 2015-10-29T23:39:16.960 回答