无法访问 github API 获取错误凭据错误

问题描述

我正在尝试为 PR 添加自定义代码检查。经过一番研究,我发现可以使用下面提到的 API 来完成。

POST /repos/{owner}/{repo}/check-runs

最初,它给了我这个错误

{
    "message": "You must authenticate via a GitHub App.","documentation_url": "https://docs.github.com/rest/reference/checks#create-a-check-run"
}

我遵循了此 link 中提供的指南。

  1. 我创建了一个 GitHub 应用。
  2. 授予它所需的权限。
  3. 生成一个私钥。
  4. 使用私钥生成 JWT 令牌。
  5. 也在 repo 中安装了 Github 应用

我创建了一个 curl 请求:

curl --location --request POST 'https://api.github.com/repos/X/X-app/check-runs' \
--header 'Accept: application/vnd.github.v3+json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.X.X-X-SAFvDnSkaJDjMI2T_BAC2iLlRZ7uNyFSe-X-UgFBFjoFrwsbcYFKfDM8f3FNPYpA6afhr18DLZ6rzu35klA' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "loremipsum"
}'

但是,现在我收到此错误

{
    "message": "Bad credentials","documentation_url": "https://docs.github.com/rest"
}

我不确定我在这里遗漏了什么。

解决方法

我想通了。 GH 文档具有误导性。以下是完成这项工作的步骤:

  • 使用 JWT 不记名令牌,列出您的安装并记下您应用的安装 ID
$ curl -i -X POST \
-H "Authorization: Bearer YOUR_JWT" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/app/installations
  • 然后获取上述 ID 的安装访问令牌
$ curl -i -X POST \
-H "Authorization: Bearer YOUR_JWT" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/app/installations/:installation_id/access_tokens
  • 然后使用该令牌创建检查运行但使用“授权:令牌”标头 curl -i -H "Authorization: token YOUR_INSTALLATION_ACCESS_TOKEN"