关于以 GitHub 应用程序身份进行身份验证
你必须以 GitHub 应用程序身份进行身份验证,才能作为该应用程序发出 REST API 请求。例如,如果你想使用 API 为访问组织资源生成安装访问令牌、为你的应用程序列出跨组织的安装或暂停应用程序安装,你必须以应用程序身份进行身份验证。
如果 REST API 端点要求你以应用程序身份进行身份验证,该端点的文档将表明你必须使用 JWT 才能访问该端点。GraphQL API 不支持任何要求你以应用程序身份进行身份验证的查询或突变。
使用 JSON Web 令牌 (JWT) 作为 GitHub 应用进行身份验证
-
为你的应用生成一个 JSON Web 令牌 (JWT)。有关详细信息,请参阅“为 GitHub 应用生成 JSON Web 令牌 (JWT)”。
-
将 JWT 包含在请求的
Authorization
标头中。在以下示例中,将YOUR_JWT
替换为你的 JWT。curl --request GET \ --url "https://api.github.com/app/installations" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer YOUR_JWT" \ --header "X-GitHub-Api-Version: 2022-11-28"
使用 Octokit.js SDK 作为 GitHub 应用进行身份验证
你可以使用 GitHub 的 Octokit.js SDK 作为 GitHub 应用进行身份验证。使用 SDK 进行身份验证的一个优点是,你无需自己生成 JSON Web 令牌 (JWT)。此外,SDK 将在 JWT 过期时负责重新生成 JWT。
注意:你必须安装并导入 octokit
才能使用 Octokit.js 库。以下示例根据 ES6 使用 import 语句。有关不同安装和导入方法的详细信息,请参阅 octokit/octokit 存储库中的 用法。
-
获取你的应用的 ID。你可以在 GitHub 应用的设置页面上找到你的应用的 ID。有关导航到 GitHub 应用的设置页面的详细信息,请参阅“修改 GitHub 应用注册”。
-
生成一个私钥。有关详细信息,请参阅“管理 GitHub 应用的私钥”。
-
从
octokit
导入App
。JavaScript import { App } from "octokit";
import { App } from "octokit";
-
创建一个新的
App
实例。在以下示例中,将APP_ID
替换为对你的应用 ID 的引用。将PRIVATE_KEY
替换为对你的应用私钥值的引用。JavaScript const app = new App({ appId: APP_ID, privateKey: PRIVATE_KEY, });
const app = new App({ appId: APP_ID, privateKey: PRIVATE_KEY, });
-
使用
octokit
方法向需要 JWT 的 REST API 端点发出请求。例如JavaScript await app.octokit.request("/app")
await app.octokit.request("/app")