Github v3 API - 创建一个仓库

4
我正在尝试使用Github v3 API - 我已经实现了必要的OAuth流程并且它工作得很好。现在我正在尝试一些Repos API端点(http://developer.github.com/v3/repos/)。到目前为止,我能够使用GET /user/repos获取我的repos列表,但是当我尝试使用POST /user/repos创建一个repo时,我会得到一个404错误。你认为我可能做错了什么?
4个回答

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

这里不应该也包括用户名吗? - Wakan Tanka

7
我遇到了同样的问题。你之所以得到 404 错误,是因为当你授权访问 Github 时,你还需要传递你想要的权限范围。例如,在标题中,你应该看到 "X-OAuth-Scopes: repo, user",这意味着该用户对他的个人资料和存储库具有读写访问权限。一旦你设置了正确的权限范围,你就可以正常进行 POST/PUT 请求。
要查看你是否拥有正确的权限,你可以执行以下操作。将 XXXXXXX 替换为你的访问令牌。
curl -I https://api.github.com/user?access_token=XXXXXXXX

这对我很有帮助。我一开始尝试使用“public_repo”范围,但没有成功。改用“repo”范围就可以了。我不需要请求“user”。 - jrburke

3

作为用户创建存储库时,您可以使用个人访问令牌和基本身份验证。当您在命令行上操作并启用了2FA时,这可能会更加简单。

curl -d '{"name":"test"}' -u githubuser:personaccesstoken https://api.github.com/user/repos

在此处创建个人访问令牌:https://github.com/settings/tokens,并确保它具有 'repo' 范围。

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

我创建了一个基于这个示例的Shell脚本,可以将多个Subversion项目迁移到Github https://gist.github.com/4062655 - Mikko Ohtamaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接