curl 如何使用GitHub API为安装我的GitHub应用程序的用户创建一个新的仓库?

yzuktlbb  于 2022-11-13  发布在  Git
关注(0)|答案(2)|浏览(145)

我已经为GitHub用户创建了一个GitHub应用程序,以便安装在他们的个人帐户上。我希望它使用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"
}

根据响应,该访问令牌的作用域似乎应该能够创建一个新的存储库,因为它在权限主体响应JSON中显示为administration: write,但我可能在这个假设上犯了错误。
有谁能帮我格式化我向GitHub API发出的请求,以便为安装的GitHub应用程序创建新的仓库吗?根据我在上面链接的文档,它应该看起来像这样。我应该添加我生成的新访问令牌吗?

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"}'
eoigrqb6

eoigrqb61#

默认情况下,此请求的内容类型为'Content-Type' => 'application/x-www-form-urlencoded'
您的发布数据是JSON。
-H "Content-Type: application/json" .
注意:我没有查看API文档。

k3fezbri

k3fezbri2#

我没有使用GitHub应用,而是选择创建一个OAuth应用。回想起来,只要启用了OAuth,这两个应用都可以工作。重要的是要确保您是作为用户进行身份验证,而不是作为安装进行身份验证。在从OAuth授权回调中接收到查询参数中的code后,您需要通过https://github.com/login/oauth/access_token的API调用请求一个访问令牌,以作为授权应用的GitHub用户进行身份验证。这将为您颁发一个访问令牌,您可以使用GitHub REST API代表用户执行操作,比如创建一个新的存储库。欢迎访问take a look at my project's code,看看我是如何做到的。干杯!

相关问题