【问题标题】:Github API access to private repos using OAuthGithub API 使用 OAuth 访问私有存储库
【发布时间】:2013-08-17 01:15:57
【问题描述】:

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

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

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. 所以我很沮丧并查看了these docs 以获取 OAuth 令牌,但我对如何更改它以便没有用户界面感到困惑——即,这样我的应用就可以自动访问我所属的 Github 组织,而用户无需做任何特别的事情。

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

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

【问题讨论】:

  • 酷宝石!但我似乎仍然在使用它进行身份验证时遇到问题。如果我将凭据作为新客户的 client_id 和 client_secret 传递,我仍然无法访问组织的私有存储库。这是我的 client_id 和 client_secret 凭据的问题吗?

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


【解决方案1】:

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

显然我的客户端凭据不起作用。我想我不太明白它们的用途。最简单的方法是使用 username:password 方法(上面的 1)。

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

【讨论】:

  • 感谢您的反馈。我正好面临同样的问题。我发现没有更合适的方法令人惊讶……现在更是如此,因为有两步验证 D:
【解决方案2】:

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

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

这可以通过设置轻松更改> Personal Access tokens > 编辑

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2018-09-23
    • 2023-03-16
    相关资源
    最近更新 更多