【问题标题】:create repo using github api (only curl and no oauth)使用 github api 创建 repo(只有 curl,没有 oauth)
【发布时间】:2019-06-24 16:30:18
【问题描述】:

我正在尝试使用 v3 api 创建一个 github 存储库,但我总是收到 Not Found 错误。我只想用curl而不用oauth来做。这就是我正在尝试的:

curl -u myusername https://api.github.com/users/repos -d '{"name": "reponame"}'

我错过了什么?

【问题讨论】:

    标签: github-api


    【解决方案1】:

    如果没有访问令牌,您将无法做到这一点。 另外,请随时查看我的 GitHub 开源项目Git-Captain

    我创建了一个带有 Node.js 后端和 HTML/JS 前端的 Web 应用程序,您可以将其设置为让 API 为您执行许多此类调用。它有一个 Windows 服务器的分步操作,我将很快添加一个 Linux 分步操作。

    只需对项目稍作调整,即可在源中添加一个新端点来为您执行此操作。

    回答你的问题,

    GitHub API 文档准确解释了如何执行您的请求 on this link

    举个例子:

    按照您在 CURL 中的要求,显然将令牌“5199...”替换为您自己的:

    curl -i -H "Authorization: token 5199831f4dd3b79e7c5b7e0ebe75d67aa66e79d4" \
        -d '{ \
            "name": "blog", \
            "auto_init": true, \
            "private": true, \
            "gitignore_template": "nanoc" \
          }' \
        https://api.github.com/user/repos
    

    不在 CURL 中,根据 StackOverflow question 您可以执行以下操作:

    https://api.github.com/orgs/<organisation_name>/repos?access_token=<generated token>
           or
    https://api.github.com/users/<username>/repos?access_token=<generated token> 
    

    在正文中,将其作为有效负载传递:

    {
      <br/>"name": "<Repo Name>",<br/>
      "description": "<Whateveryour description is>",<br/>
      "homepage": "https://github.com",<br/>
      "private": false,<br/>
    }
    

    您可以通过转到Settings-&gt;Developer Settings-&gt; Personal Access Tokens-&gt;Generate new token获取“GitHub中的个人访问令牌”


    或执行以下所有操作

    • 编写一个将用户名、密码和 repoName 作为参数的脚本(我们称之为脚本 #1)。
    • 该脚本将调用脚本#2,即curl -u ' USER-NAME-HERE' https://api.github.com/user/repos -d '{"name": "REPO-NAME-HERE"}',它将提示您输入用户密码,
    • 让你的脚本 #1 监听脚本 #2 的响应,然后让它输入用户在脚本 #1 中作为参数传入的密码
    • 最后以编程方式按 Enter 键,这会触发 curl 以创建您的存储库。

    更新*

    因此,由于某种原因,CURL 根本不起作用,但 Git-Hub API 端点 https://api.github.com/user/repos 确实有效。使用POSTMAN,我能够创建一个新的POST,其URL 为https://api.github.com/user/repos,BODY 设置为:

    {
      "name": "Hello-World",
      "description": "This is your first repository",
      "homepage": "https://github.com",
      "private": false,
      "has_issues": true,
      "has_projects": true,
      "has_wiki": true
    }
    

    然后我转到邮递员的“授权”部分,在“类型”下选择“基本身份验证”输入我的用户名和密码。 点击更新请求,然后发送,我的 repo 就创建好了!

    【讨论】:

    • 我想避免授权令牌步骤,因为老实说我什至不知道如何获得。这是我可以在我的帐户中设置的东西,以允许外部应用程序访问我的数据吗?还是我必须通过 API 的另一个命令才能得到它?
    • 两者。在您的 GitHub 帐户中设置并调用 API。我在 Github 中设置了一个 Oauth 应用程序,一旦我设置了它,我就会得到一个“客户端 ID”和一个“客户端密码”。然后,您使用该“客户端 ID”请求“用户授权码”。一旦您拥有该用户授权代码,您就可以请求访问令牌,一旦您拥有该访问令牌(永不过期),您就可以进行任何操作。从技术上讲,您可以使用 curl、postman、Firefox 或 fiddler 完成所有这些操作。任何具有 HTTP 动词(post、get、put、delete)的工具。在我的 Git-Captain GitHub 项目中,查看“在 GitHub 中创建新的 oAuth 应用程序”步骤。
    • 对您来说更简单的解决方案是创建“个人访问令牌”,而不是 GitHub Oauth 应用程序。您可以在 GitHub 的开发人员设置中执行此操作。
    • 我已经更新了答案,提供了有关如何在设置->开发者设置->个人访问令牌->生成新令牌中创建访问令牌的信息
    • 我刚刚发现 -d '{"name": "reponame"}' 必须放在 URL 之前。我试过了,它奏效了。
    猜你喜欢
    • 2011-12-13
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2013-03-10
    • 2012-08-01
    • 2017-07-08
    相关资源
    最近更新 更多