首页 文章

使用GitHub V3 API(REST)创建分支

提问于
浏览
3

我正在尝试通过REST使用GitHub V3 API来交换仓库,但是,我遇到了根据文档(https://developer.github.com/v3/repos/forks/#create-a-fork)发出POST请求的问题 .

基本上,到目前为止我所拥有的:

  • 具有OAuth令牌的登录用户
  • 对API的POST请求设置(url - https://api.github.com/repos/carmichaelalonso/infiniteflight/forks/) - 我正在使用hurl.it进行测试 .
  • 请求中的 Headers :一个名称为'Authorization',值为'token ...',另一个名称为'Content-Type',值为'application/json'
  • 具有以下JSON的正文:''(shortlisthome是我试图将回购分组转换为的帐户 .

我不打算将此分配给组织,而不是标准用户帐户,这是我感到困惑的地方 . 当我运行请求时,我没有收到任何身份验证错误或404错误(我之前有错误,但我错误地输入了错误的值,导致此类错误) .

当我运行此请求时,我得到以下结果(422无法处理的请求):

{
"message": "Validation Failed",
"documentation_url": "---url-to-docs---",
"errors": [
{
"resource": "Fork",
"code": "invalid",
"field": "organization"
}
]
}

我不确定我是否能够将其分配给标准用户,或者我的请求是否出错 . 如果我能提供更多信息,请告诉我(这里的第一篇文章对 Session 有点不熟悉) . 谢谢!

2 回答

  • 2

    到目前为止,我已经避免了OAuth2,并且不知道投掷 . 然而,也许这可能会有所帮助 .
    This post显示了如何使用cURL的 -u 用户名标志完成:

    curl -u 'myusername' https://api.github.com/repos/carmichaelalonso/infiniteflight/forks/ -d ''

    -d (或者 --data )标志将其转换为POST请求 .
    没有那个标志,cURL默认为GET请求,这不是你想要的 .

    因为,数据是此请求的URI的一部分,所以为必须遵循 -d param的数据发送空字符串,如下所示: -d '' .

    当然,使用-u将要求您提供密码..
    以下是GitHub使用OAuth2 with their API显示的内容:

    • OAuth2令牌(在标头中发送):
      curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com

    • OAuth2令牌(作为参数发送):
      curl https://api.github.com/?access_token=OAUTH-TOKEN

    • 阅读more about OAuth2 . 请注意,对于非网站的应用程序,可以以编程方式获取OAuth2令牌 .

    • OAuth2密钥/秘密
      curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'

    我怀疑添加了 -d '' (或一些等效的投掷),
    加上上面发送OAuth2信息的格式之一可能会让你大部分时间都可以 .

  • 0

    为了让shortlisthome分叉存储库,您需要进行身份验证 . 您尝试分配is public的存储库,所以您需要做的就是为shortlisthome获取OAuth令牌,然后向您现在制作的那个发出类似的请求 . 唯一的区别是您不需要提供 {"organization": "shortlisthome"} 的JSON主体 .

    对于它的 Value ,当您是具有适当权限的组织的成员并且您希望将存储库分叉到该组织时,可选的JSON主体供您使用 . 除非您经过身份验证,否则无法将存储库分叉到其他人的帐户 .

相关问题