{"meta":{"title":"以GitHub应用身份进行身份验证","intro":"可以以 GitHub App 形式进行身份验证，以生成安装访问令牌或管理应用。","product":"应用","breadcrumbs":[{"href":"/zh/apps","title":"应用"},{"href":"/zh/apps/creating-github-apps","title":"创建GitHub应用"},{"href":"/zh/apps/creating-github-apps/authenticating-with-a-github-app","title":"使用 GitHub App 进行身份验证"},{"href":"/zh/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app","title":"以应用形式进行身份验证"}],"documentType":"article"},"body":"# 以GitHub应用身份进行身份验证\n\n可以以 GitHub App 形式进行身份验证，以生成安装访问令牌或管理应用。\n\n## 关于以 GitHub App 形式进行身份验证\n\n你必须以 GitHub App 形式进行身份验证，才能以应用程序身份发出 REST API 请求。 例如，如果想使用 API 生成用于访问组织资源的访问令牌、列出跨帐户应用安装情况或暂停应用安装，则必须作为应用进行身份验证。\n\n如果 REST API 终结点要求你以应用形式进行身份验证，该终结点的文档将指示必须使用 JWT 来访问该终结点。 GraphQL API 不支持任何需要使用 JWT 进行身份验证的查询或变更。\n\n## 使用 JSON Web 令牌 (JWT) 以 GitHub App 形式进行身份验证\n\n1. 为应用生成 JSON Web 令牌 (JWT)。 有关详细信息，请参阅“[为GitHub应用生成 JSON Web 令牌 （JWT）](/zh/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-json-web-token-jwt-for-a-github-app)”。\n2. 在请求的 `Authorization` 标头中包含 JWT。 在下面的示例中，将 `YOUR_JWT` 替换为 JWT。\n\n   ```shell\n   curl --request GET \\\n   --url \"https://api.github.com/app/installations\" \\\n   --header \"Accept: application/vnd.github+json\" \\\n   --header \"Authorization: Bearer YOUR_JWT\" \\\n   --header \"X-GitHub-Api-Version: 2026-03-10\"\n   ```\n\n## 使用 Octokit.js SDK 以 GitHub App 形式进行身份验证\n\n可以使用 GitHub 的 Octokit.js SDK 以 GitHub App 形式进行身份验证。 使用 SDK 进行身份验证的一个优点是，无需自行生成 JSON Web 令牌 (JWT)。 此外，SDK 将负责在 JWT 过期时重新生成 JWT。\n\n> \\[!NOTE]\n> 必须安装和导入 `octokit`，才能使用 Octokit.js 库。 以下示例根据 ES6 使用导入语句。 有关不同安装和导入方法的详细信息，请参阅 octokit/octokit 存储库中的[用法](https://github.com/octokit/octokit.js/#usage)。\n\n1. 获取应用的 ID。 可以在 GitHub App 的设置页上找到应用的 ID。 若要详细了解如何导航到 GitHub App 的设置页，请参阅“[修改GitHub应用注册](/zh/apps/maintaining-github-apps/modifying-a-github-app-registration#navigating-to-your-github-app-settings)”。\n\n2. 生成私钥。 有关详细信息，请参阅“[管理GitHub应用的私钥](/zh/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)”。\n\n3. 从 `App` 导入 `octokit`。\n\n   ```javascript copy\n   import { App } from \"octokit\";\n   ```\n\n4. 创建 `App` 的一个新实例。 在以下示例中，将 `APP_ID` 替换为对应用 ID 的引用。 将 `PRIVATE_KEY` 替换为对应用私钥值的引用。\n\n   ```javascript copy\n    const app = new App({\n     appId: APP_ID,\n     privateKey: PRIVATE_KEY,\n   });\n   ```\n\n5. 使用 `octokit` 方法向需要 JWT 的 REST API 终结点发出请求。 例如：\n\n   ```javascript copy\n   await app.octokit.request(\"/app\")\n   ```"}