Skip to main content

以GitHub应用身份进行身份验证

可以以 GitHub App 形式进行身份验证,以生成安装访问令牌或管理应用。

关于以 GitHub App 形式进行身份验证

你必须以 GitHub App 形式进行身份验证,才能以应用程序身份发出 REST API 请求。 例如,如果想使用 API 生成用于访问组织资源的访问令牌、列出跨帐户应用安装情况或暂停应用安装,则必须作为应用进行身份验证。

如果 REST API 终结点要求你以应用形式进行身份验证,该终结点的文档将指示必须使用 JWT 来访问该终结点。 GraphQL API 不支持任何需要使用 JWT 进行身份验证的查询或变更。

使用 JSON Web 令牌 (JWT) 以 GitHub App 形式进行身份验证

  1. 为应用生成 JSON Web 令牌 (JWT)。 有关详细信息,请参阅“为GitHub应用生成 JSON Web 令牌 (JWT)”。

  2. 在请求的 Authorization 标头中包含 JWT。 在下面的示例中,将 YOUR_JWT 替换为 JWT。

    curl --request GET \
    --url "http(s)://HOSTNAME/api/v3/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 App 形式进行身份验证

可以使用 GitHub 的 Octokit.js SDK 以 GitHub App 形式进行身份验证。 使用 SDK 进行身份验证的一个优点是,无需自行生成 JSON Web 令牌 (JWT)。 此外,SDK 将负责在 JWT 过期时重新生成 JWT。

注意

必须安装和导入 octokit,才能使用 Octokit.js 库。 以下示例根据 ES6 使用导入语句。 有关不同安装和导入方法的详细信息,请参阅 octokit/octokit 存储库中的用法

  1. 获取应用的 ID。 可以在 GitHub App 的设置页上找到应用的 ID。 若要详细了解如何导航到 GitHub App 的设置页,请参阅“修改GitHub应用注册”。

  2. 生成私钥。 有关详细信息,请参阅“管理GitHub应用的私钥”。

  3. App 导入 octokit

    JavaScript
    import { App } from "octokit";
    
  4. 创建 App 的一个新实例。 在以下示例中,将 APP_ID 替换为对应用 ID 的引用。 将 PRIVATE_KEY 替换为对应用私钥值的引用。

    JavaScript
     const app = new App({
      appId: APP_ID,
      privateKey: PRIVATE_KEY,
    });
    
  5. 使用 octokit 方法向需要 JWT 的 REST API 终结点发出请求。 例如:

    JavaScript
    await app.octokit.request("/app")