如果您通过以下方式创建了正在使用的令牌应用页面 https://github.com/settings/applications,那么这个 token 将有这些scopes http://developer.github.com/v3/oauth/#scopes: user
, public_repo
, repo
, gist
。您可以通过使用该令牌发出 API 请求并查看响应 HTTP 标头来验证这一点:
curl -v -H 'Authorization: token xxx' https://api.github.com
寻找X-OAuth-Scopes
响应标头将包含范围列表:
X-OAuth-Scopes: user, public_repo, repo, gist
但是,要删除存储库,令牌需要有delete_repo scope http://developer.github.com/v3/repos/#delete-a-repository.
因此,您需要一个与您现有的令牌具有不同范围的令牌。您可以使用以下命令创建这样的令牌授权API http://developer.github.com/v3/oauth/#create-a-new-authorization:
curl -v -u username -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}'
这将返回一个带有新令牌的 JSON 文档,您应该能够使用它来删除存储库:
{
"id": XXXXX,
"url": "https://api.github.com/authorizations/XXXXX",
"app": {
"name": "GitHub API",
"url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
"client_id": "00000000000000000000"
},
"token": "XXXXXX",
"note": "token with delete repo scope",
"note_url": null,
"created_at": "2013-10-11T20:34:49Z",
"updated_at": "2013-10-11T20:34:49Z",
"scopes": [
"delete_repo"
]
}
当然,以这种方式创建令牌时,您可以要求多个范围,而不仅仅是delete_repo
scope.
另外,作为旁注,当您没有正确的授权时,API 返回 404 错误的原因是防止信息泄露 http://developer.github.com/v3/#authentication.