无法访问 github API 出现错误凭据错误

Irt*_*iza 11 github github-api github-api-v3

我正在尝试为 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"
}
Run Code Online (Sandbox Code Playgroud)

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

  1. 我创建了一个 GitHub 应用程序。
  2. 给予了它所需的许可。
  3. 生成了私钥。
  4. 使用私钥生成 JWT 令牌。
  5. 也在存储库中安装了 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"
}'
Run Code Online (Sandbox Code Playgroud)

但是,现在我收到这个错误

{
    "message": "Bad credentials",
    "documentation_url": "https://docs.github.com/rest"
}
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里缺少什么。

KKS*_*KKS 22

我明白了这一点。GH 文档有点不清楚/具有误导性。以下是实现此功能的步骤:

  • 使用 JWT 不记名令牌,列出您的安装并记下应用程序的安装 ID
$ curl -i \
-H "Authorization: Bearer YOUR_JWT" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/app/installations
Run Code Online (Sandbox Code Playgroud)
  • 然后获取上述 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
Run Code Online (Sandbox Code Playgroud)
  • 然后使用该令牌创建检查运行但使用“Authorization:token”标头 curl -i -H "Authorization: token YOUR_INSTALLATION_ACCESS_TOKEN"