关于安装访问令牌
为了以应用安装的身份进行身份验证,您必须生成一个安装访问令牌。有关以应用安装的身份进行身份验证的更多信息,请参阅“以 GitHub App 安装的身份进行身份验证”。
注意
您可以使用 GitHub 的 Octokit SDK 以应用身份进行身份验证,而不是生成安装访问令牌。SDK 将为您处理生成安装访问令牌,并在令牌过期后重新生成令牌。有关以应用安装的身份进行身份验证的更多信息,请参阅“以 GitHub App 安装的身份进行身份验证”。
您应确保安装访问令牌的安全。有关更多信息,请参阅“创建 GitHub App 的最佳实践”。
生成安装访问令牌
-
为您的应用生成 JSON Web 令牌 (JWT)。有关更多信息,请参阅“为 GitHub App 生成 JSON Web 令牌 (JWT)”。
-
获取要以其身份进行身份验证的安装的 ID。
如果您正在响应 Webhook 事件,则 Webhook 有效负载将包含安装 ID。
您还可以使用 REST API 查找应用安装的 ID。例如,您可以使用
GET /users/{username}/installation
、GET /repos/{owner}/{repo}/installation
、GET /orgs/{org}/installation
或GET /app/installations
端点获取安装 ID。有关更多信息,请参阅“GitHub Apps 的 REST API 端点”。您还可以在应用的设置页面上找到应用 ID。应用 ID 与客户端 ID 不同。有关导航到 GitHub App 设置页面的更多信息,请参阅“修改 GitHub App 注册”。
-
向
/app/installations/INSTALLATION_ID/access_tokens
发送 REST APIPOST
请求。在请求的Authorization
标头中包含您的 JSON Web 令牌。将INSTALLATION_ID
替换为您要以其身份进行身份验证的安装的 ID。例如,发送此 curl 请求。将
INSTALLATION_ID
替换为安装的 ID,并将JWT
替换为您的 JSON Web 令牌curl --request POST \ --url "https://api.github.com/app/installations/INSTALLATION_ID/access_tokens" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer JWT" \ --header "X-GitHub-Api-Version: 2022-11-28"
可选地,您可以使用
repositories
或repository_ids
主体参数指定安装访问令牌可以访问的单个存储库。如果您不使用repositories
或repository_ids
来授予对特定存储库的访问权限,则安装访问令牌将有权访问授予安装访问权限的所有存储库。安装访问令牌无法获得对未授予安装访问权限的存储库的访问权限。您可以列出最多 500 个存储库。可选地,使用
permissions
主体参数指定安装访问令牌应具有的权限。如果未指定permissions
,则安装访问令牌将具有授予应用的所有权限。安装访问令牌无法获得未授予应用的权限。响应将包含安装访问令牌、令牌过期时间、令牌具有的权限以及令牌可以访问的存储库。安装访问令牌将在 1 小时后过期。
有关此端点的更多信息,请参阅“GitHub Apps 的 REST API 端点”。
注意
在大多数情况下,您可以使用
Authorization: Bearer
或Authorization: token
传递令牌。但是,如果您传递 JSON Web 令牌 (JWT),则必须使用Authorization: Bearer
。