我正在尝试使用 Github v3 API - 我已经实现了所需的 OAuth 流程并且效果很好。
现在我正在尝试一些 Repos API 端点 (http://developer.github.com/v3/repos/)。
到目前为止,我可以使用以下命令获取我的存储库列表:GET /user/repos 但是,当我尝试使用 POST /user/repos 创建存储库时,我得到一个 404。
有什么想法我可能做错了吗?
茹贝尔
我正在尝试使用 Github v3 API - 我已经实现了所需的 OAuth 流程并且效果很好。
现在我正在尝试一些 Repos API 端点 (http://developer.github.com/v3/repos/)。
到目前为止,我可以使用以下命令获取我的存储库列表:GET /user/repos 但是,当我尝试使用 POST /user/repos 创建存储库时,我得到一个 404。
有什么想法我可能做错了吗?
茹贝尔
你能告诉我们你是如何完成 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
我遇到过同样的问题。您使用 oauth 访问令牌获得 404 的原因是,当您授权给 github 时,您还需要另外传递您想要的范围。例如,在标题中,您应该看到“X-OAuth-Scopes: repo, user”,这意味着该用户具有对其配置文件和存储库的读/写访问权限。一旦你设置了正确的范围,你应该能够很好地执行 POST/PUT 请求。
查看您是否拥有正确的权限。您可以执行以下操作。用您的访问令牌替换 XXXXXXX。
curl -I https://api.github.com/user?access_token=XXXXXXXX
要以用户身份创建存储库,您可以使用个人访问令牌和基本身份验证,当您在命令行上乱搞并启用 2FA 时,这会更简单。
curl -d '{"name":"test"}' -u githubuser:personaccesstoken https://api.github.com/user/repos
在此处创建个人访问令牌https://github.com/settings/tokens并确保它具有“repo”范围。
此脚本允许您将令牌和项目名称作为变量读入,以便您可以在脚本中使用它
#!/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