如何使用Octokit完成GitHub App认证并查询组织数据?
解决GitHub App调用API时的installationId认证错误
你的问题出在没有使用安装级别的octokit实例:直接用app.octokit发起请求时,它用的是App本身的身份认证,而访问组织仓库需要基于GitHub App的安装生成专用的访问令牌。
修正步骤:
- 用
app.getInstallationOctokit(installationId)获取对应安装的octokit实例,这个实例会自动处理安装令牌的生成和刷新 - 移除请求参数里多余的
installationId,因为令牌已经和安装绑定 - 移除不必要的
clientSecret参数(GitHub App认证不需要这个,这是OAuth App的配置)
修正后的代码:
import { App } from 'octokit' const app = new App({ appId: 1234, privateKey: `-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----`, }) const main = async () => { try { // 获取绑定指定安装的octokit实例 const octokit = await app.getInstallationOctokit(1234) // 发起分支查询请求 const res = await octokit.request('GET /repos/{owner}/{repo}/branches', { owner: 'Owner', repo: 'Repo', headers: { 'X-GitHub-Api-Version': '2022-11-28' } }) console.log(res.data) } catch (err) { console.error(err.message) } } main()
额外说明:
- 如果你需要查询组织下的所有仓库,可以先调用
GET /orgs/{org}/repos接口获取仓库列表,再循环查询每个仓库的分支 getInstallationOctokit会自动处理令牌的过期刷新,无需手动维护令牌生命周期
内容的提问来源于stack exchange,提问作者Anthony Luzquiños
相关产品推荐
相关产品推荐

