【问题标题】:How do I use GitHub API to create a new repository for a user that installs my GitHub App?如何使用 GitHub API 为安装我的 GitHub 应用程序的用户创建新存储库?
【发布时间】:2022-11-11 23:11:34
【问题描述】:

我创建了一个 GitHub 应用程序供 GitHub 用户安装在他们的个人帐户上。我希望它使用 GitHub API 在他们的用户帐户上创建一个新的存储库。

我花了几天时间尝试遵循官方 GitHub API 文档中的说明,特别是如何create a repository for the authenticated user。我没有取得太大的成功。

我可以使用我的 GitHub 应用程序的私钥生成 JWT,然后使用它来代表 GitHub 应用程序安装生成访问令牌(安装是指已安装该应用程序的任何用户或组织帐户)。

要求:

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

【问题讨论】:

    标签: api github curl github-api github-app


    【解决方案1】:

    默认情况下,此请求的内容类型为 'Content-Type' =&gt; 'application/x-www-form-urlencoded'

    您的帖子数据是 JSON。所以我猜你的请求头应该包括
    -H "Content-Type: application/json"

    注意:我没有查看 API 文档。

    【讨论】:

      【解决方案2】:

      我没有使用 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 看看我是怎么做到的。干杯!

      【讨论】:

        猜你喜欢
        • 2012-04-01
        • 2019-11-09
        • 2016-04-17
        • 2017-08-09
        • 2023-03-10
        • 2020-04-28
        • 1970-01-01
        • 2014-09-22
        • 2015-04-07
        相关资源
        最近更新 更多