我已经为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"}'
2条答案
按热度按时间eoigrqb61#
默认情况下,此请求的内容类型为
'Content-Type' => 'application/x-www-form-urlencoded'
您的发布数据是JSON。
-H "Content-Type: application/json"
.注意:我没有查看API文档。
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,看看我是如何做到的。干杯!