关于以 GitHub App 形式进行身份验证
你必须以 GitHub App 形式进行身份验证,才能以应用程序身份发出 REST API 请求。 例如,如果要使用 API 生成用于访问组织资源的安装访问令牌、列出应用的跨组织安装或暂停应用安装,则必须以应用形式进行身份验证。
如果 REST API 终结点要求你以应用形式进行身份验证,该终结点的文档将指示必须使用 JWT 来访问该终结点。 GraphQL API 不支持任何需要以应用形式进行身份验证的查询或变更。
使用 JSON Web 令牌 (JWT) 以 GitHub App 形式进行身份验证
-
为应用生成 JSON Web 令牌 (JWT)。 有关详细信息,请参阅“为 GitHub 应用生成 JSON Web 令牌 (JWT)”。
-
在请求的
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"
使用 Octokit.js SDK 以 GitHub App 形式进行身份验证
可以使用 GitHub 的 Octokit.js SDK 以 GitHub App 形式进行身份验证。 使用 SDK 进行身份验证的一个优点是,无需自行生成 JSON Web 令牌 (JWT)。 此外,SDK 将负责在 JWT 过期时重新生成 JWT。
注意:必须安装和导入 octokit
,才能使用 Octokit.js 库。 以下示例根据 ES6 使用导入语句。 有关不同安装和导入方法的详细信息,请参阅 octokit/octokit 存储库中的用法。
-
在应用的设置页上,获取应用程序 ID。
- 对于用户拥有的应用,设置页为
https://github.com/settings/apps/APP-SLUG
。 - 对于组织拥有的应用,设置页为
https://github.com/organizations/ORGANIZATION/settings/apps/APP-SLUG
。
将
APP-SLUG
替换为应用的转换名称,将ORGANIZATION
替换为组织的转换名称。 例如,https://github.com/organizations/octo-org/settings/apps/octo-app
。 - 对于用户拥有的应用,设置页为
-
生成私钥。 有关详细信息,请参阅“管理 GitHub 应用的私钥”。
-
从
octokit
导入App
。JavaScript import { App } from "octokit";
-
创建
App
的一个新实例。 在以下示例中,将APP_ID
替换为对应用 ID 的引用。 将PRIVATE_KEY
替换为对应用私钥值的引用。JavaScript const app = new App({ appId: APP_ID, privateKey: PRIVATE_KEY, });
-
使用
octokit
方法向需要 JWT 的 REST API 终结点发出请求。 例如:JavaScript await app.octokit.request("/app")