我遇到了一些描述相同问题的其他帖子,但他们都没有解决方案,因此为我的困境提供了一些额外的背景信息。 Github 显示了三个级别的应用程序:Oauth 应用程序、授权的 Github 应用程序和已安装的 Github 应用程序。我的目标是创建一个新的 blob 并将其提交到给定的分支中。
使用 OAuth 应用程序的访问令牌时,API 请求始终有效。
--header 'Authorization: Bearer gho_<redacted>' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
--header 'Accept: application/vnd.github+json' \
--header 'Content-Type: application/json' \
--data '{
"content": "Content of the blob",
"encoding": "utf-8"
}'
为授权的 Github 应用程序为每个用户生成的访问令牌适用于某些存储库,但不适用于所有存储库:
--header 'Authorization: Bearer ghu_<readcted>' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
--header 'Accept: application/vnd.github+json' \
--header 'Content-Type: application/json' \
--data '{
"content": "Content of the blob",
"encoding": "utf-8"
}'
最重要的是,Github 应用程序的安装访问令牌会引发 403 错误:
--header 'Authorization: Bearer ghs_<redacted>' \
--header 'X-GitHub-Api-Version: 2022-11-28' \
--header 'Accept: application/vnd.github+json' \
--header 'Content-Type: application/json' \
--data '{
"content": "Content of the blob",
"encoding": "utf-8"
}'
{
"message": "Resource not accessible by integration",
"documentation_url": "https://docs.github.com/rest/git/blobs#create-a-blob",
"status": "403"
}
我多次检查了 Github 应用程序权限,是的,它具有创建 Blob 所需的内容权限。以下是该应用程序拥有的权限:
"permissions": {
"actions": "write",
"administration": "write",
"checks": "write",
"contents": "write",
"deployments": "write",
"environments": "read",
"issues": "write",
"metadata": "read",
"pull_requests": "write",
"repository_hooks": "write",
"statuses": "write",
"workflows": "write"
}
Blob 创建 API 提到 GitHub 应用程序用户访问令牌和 GitHub 应用程序安装访问令牌都可以使用,但我收到了这两个令牌的 403 错误。
我错过了什么吗?如果我想为最终用户提供细粒度的访问,如何解决已安装的 Github 应用程序的此问题?