我正在尝试使用Github v3 API - 我已经实现了所需的OAuth流程并且运行良好。
现在我正在尝试一些Repos API端点(http://developer.github.com/v3/repos/)。
到目前为止,我可以使用:GET / user / repos获取我的回购列表 但是,当我尝试使用POST / user / repos创建一个repo时,我得到一个404.
有什么想法我可能做错了吗?
茹贝尔
答案 0 :(得分:8)
您能否告诉我们您是如何完成HTTP请求的? 404听起来好像你正在使用错误的路径。但是为了给出一个可靠的答案而不是一个疯狂的猜测,我们需要看到你的请求,包括你如何发送你的令牌,只需用“xxx”或其他东西掩盖它。
我将在此期间向您展示一个示例请求,即:
curl -XPOST -H 'Authorization: token S3CR3T' https://api.github.com/user/repos -d '{"name":"my-new-repo","description":"my new repo description"}'
您当然需要替换OAuth令牌:S3CR3T
答案 1 :(得分:7)
我有同样的问题。您使用oauth访问令牌获得404的原因是,当您授权github时,您还需要另外传递所需的范围。例如,在标题中,您应该看到“X-OAuth-Scopes:repo,user”,这意味着该用户具有对其配置文件和存储库的读/写访问权限。设置正确的范围后,您应该可以正常执行POST / PUT请求。
查看您是否拥有正确的权限。您可以执行以下操作。用您的访问令牌替换XXXXXXX。
curl -I https://api.github.com/user?access_token=XXXXXXXX
答案 2 :(得分:3)
为了以用户身份创建存储库,您可以使用个人访问令牌和基本身份验证,当您在命令行上进行操作并启用2FA时,这可以更加简单。
curl -d '{"name":"test"}' -u githubuser:personaccesstoken https://api.github.com/user/repos
在此处https://github.com/settings/tokens创建个人访问令牌,并确保其具有“回复”功能。范围。
答案 3 :(得分:1)
此脚本允许您将令牌和项目名称作为变量读入,以便在脚本中使用它
#!/usr/bin/env bash -u
#
TOKEN=`cat token_file`
PROJECT=myproject
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' -d '{"name": "'"$PROJECT"'"}' https://api.github.com/user/repos?access_token=$TOKEN