1

我创建了一个 GitHub 应用程序并将其安装在我的帐户中,使其能够访问我帐户中的私有存储库。GitHub 应用程序具有元数据的读取权限。然后,我按照此处的步骤生成了一个 JWT 并使用它来创建安装访问令牌。我尝试使用此令牌使用 GitHub 搜索 API 在上述私有存储库中搜索关键字,如下所示:

https://api.github.com/search/code?q=abc+in:file+repo:username/private-repo

但是,这将返回以下响应。

{
    "message": "Validation Failed",
    "errors": [
        {
            "message": "The listed users and repositories cannot be searched either because the resources do not exist or you do not have permission to view them.",
            "resource": "Search",
            "field": "q",
            "code": "invalid"
        }
    ],
    "documentation_url": "https://docs.github.com/v3/search/"
}

我尝试使用此访问令牌来获取此 GitHub 应用程序安装的存储库,并在响应中成功返回了私有存储库。我认为这意味着安装可以访问私有仓库并且令牌按预期工作。使用的 API:https://api.github.com/installation/repositories

那为什么搜索会失败呢?

4

1 回答 1

0

通过 GitHub 支持提出了一张票。他们的回应:

查询失败,因为 GitHub App 没有 read私有仓库内容的权限。元数据read 权限将允许您搜索存储库,但对存储库的内容没有足够的范围read(私有)。

文档在元数据下列出了搜索 API,但它应该在内容权限下。授予 GitHub 应用程序的内容read权限解决了这个问题。

于 2021-09-15T18:02:23.357 回答