You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub API为已安装GitHub App的用户创建仓库?

问题描述

我开发了一款供GitHub个人用户安装的GitHub App,希望通过GitHub API在用户的个人账户中创建新仓库。我已花费数日查阅GitHub API官方文档中“为已认证用户创建仓库”的相关内容,但未取得成功。

我可以通过GitHub App的私钥生成JWT,再借此为GitHub App安装实例(即安装该应用的用户账户)生成访问令牌:

获取访问令牌的请求示例

curl -i -X POST -H "Authorization: Bearer <<<JWT>>>" -H "Accept: application/vnd.github+json" https://api.github.com/app/installations/<<<Installation ID>>>/access_tokens

响应示例

{
  "token": "ghs_zdhWvuGrhoi4UJsd1tX4Ggtae5f84jdu8tH3",
  "expires_at": "2022-11-01T12:00:00Z",
  "permissions": {
    "administration": "write",
    "metadata": "read"
  },
  "repository_selection": "all"
}

从响应来看,该访问令牌拥有administration: write权限,理论上应具备创建仓库的权限,但我对此存疑。我写出了如下请求,是否需要使用生成的新访问令牌?能否协助我调整为GitHub App安装实例创建新仓库的GitHub API请求格式?

我当前的请求

curl \
  -X POST \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer ghs_zdhWvuGrhoi4UJsd1tX4Ggtae5f84jdu8tH3" \
  https://api.github.com/user/repos \
  -d '{"name":"Repo-Created-From-GitHub-API"}'

解决方案
  1. 令牌使用确认:必须使用生成的安装访问令牌(即响应中的ghs_xxx字符串)发起请求,你的思路是对的,但请求格式有关键错误。

  2. 身份验证头修正:GitHub App安装令牌的身份验证头需使用token前缀,而非Bearer——这是导致请求失败的核心原因之一。

  3. 调整后的有效请求:

curl \
  -X POST \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: token ghs_zdhWvuGrhoi4UJsd1tX4Ggtae5f84jdu8tH3" \
  https://api.github.com/user/repos \
  -d '{"name":"Repo-Created-From-GitHub-API", "private": false}'
  1. 额外检查项:
    • 确认GitHub App在安装流程中已向用户请求administration: write权限,仅令牌返回该权限但用户未授予的话仍会失败;
    • 检查令牌是否过期(有效期1小时,以响应中的expires_at为准);
    • 若请求仍失败,添加-v参数查看详细错误响应,常见问题包括仓库名称已存在、账户权限限制等。

内容的提问来源于stack exchange,提问作者Josh Kautz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:25:17