5

我正在尝试通过 API 更新我的一个存储库中的文件。

这是我对该文件的获取(效果很好):

curl -XGET 'https://git.fake.local/api/v3/repos/jsmith/repo_version/contents/version.html?ref=gh-pages'
{
  "name": "version.html",
  "path": "version.html",
  "sha": "b1b716105590454bfc4c0247f193a04088f39c7f",
  "size": 5,
  "url": "https://git.fake.local/api/v3/repos/jsmith/post_version/contents/version.html?ref=gh-pages",
  "html_url": "https://git.fake.local/jsmith/post_version/blob/gh-pages/version.html",
  "git_url": "https://git.fake.local/api/v3/repos/jsmith/post_version/git/blobs/b1b716105590454bfc4c0247f193a04088f39c7f",
  "type": "file",
  "content": "aW5pdAo=\n",
  "encoding": "base64",
  "_links": {
    ...
  }
}

这是我尝试通过 PUT 更新该文件:

curl -XPUT 'https://git.fake.local/api/v3/repos/jsmith/repo_version/contents/version.html?ref=gh-pages' -d '{
   "message": "update from api",
   "committer": {
     "name": "Joe Smith",
     "email": "jsmith@fake.com"
   },
   "content": "bXkgdXBkYXRlZCBmaWxlIGNvbnRlbnRz",
   "sha": "b1b716105590454bfc4c0247f193a04088f39c7f"
 }'

结果:

{
  "message": "Not Found"
}
4

1 回答 1

6

好吧...我想我明白了。

来自 github 文档:

验证

通过 GitHub API v3 可以通过三种方式进行身份验证。在某些地方,需要身份验证的请求将返回404 Not Found,而不是。403 Forbidden这是为了防止私有存储库意外泄漏给未经授权的用户。

如果 Auth 是一个问题,我期待 403,但他们正在抛出 404,所以基本上我可能需要确保我的身份验证正确并且一切都会好起来的。

已解决:我创建了一个个人 oauth 令牌(在设置/应用程序下)并添加到标头中的 curl 请求中,这一切都很好。

curl -XPUT -H "Authorization: token MYSECRETTOKEN"

于 2014-01-24T16:09:25.400 回答