【问题标题】:GitHub API - private or forked repositories not listing nor comparingGitHub API - 未列出或比较的私有或分叉存储库
【发布时间】:2025-12-22 19:25:11
【问题描述】:

在我的 GitHub 帐户中,我有几个我创建的公共存储库以及几个从我组织中的存储库派生的私有存储库。

我的问题是

a) GET /user/repos 仅列出公共个人创建的存储库,而不管“类型”参数如何 b) 对分叉存储库的 COMPARE 调用返回 404

我正在使用 Oauth 2 登录。

我有什么遗漏的吗?

谢谢

【问题讨论】:

    标签: github-api


    【解决方案1】:

    如果我理解正确,您所描述的情况如下:

    1. 您属于一个组织。 (我们称之为“@your-organization”。)
    2. @your-organization 至少有一个私有存储库。 (我们称之为“你的组织/私人回购”。)
    3. 您的个人帐户中有该存储库的复刻(例如 gulliver-smith/private-repo)。
    4. 您正在使用 OAuth 令牌通过 GitHub API 进行身份验证。
    5. 当您访问 GET /user/repos 时,响应不包括您的分叉(例如 gulliver-smith/private-repo)。
    6. 当您访问GET /repos/gulliver-smith/private-repo/compare/:base...:head 时,您会得到一个404

    如果正确,您需要验证以下几点:

    1. 确保您的 OAuth 令牌具有 repo scope。如果您的令牌具有repo 范围,您将观察到上述行为。要验证与您的令牌关联的范围,请查看 X-OAuth-Scopes 响应标头。

      $ curl -I https://api.github.com/ -H "Authorization: token REDACTED" | grep ^X-OAuth-Scopes
      
      X-OAuth-Scopes: admin:org, admin:public_key, delete_repo, gist, notifications, repo, user
      
    2. 如果您使用的是属于 OAuth 应用程序的令牌,则该组织可能启用了 third-party application restrictions。如果是这样,您可以ask the organization's administrators to approve the OAuth application 以便该应用可以代表您访问组织的存储库。

    【讨论】: