使用curl通过Github API v3创建新的Gist

6

在使用Github的API V3发布私有gist时,我已经奋斗了相当长的时间,几乎放弃了。几乎。也许有人也遇到了类似的问题,或者知道以下行为的原因:

现在curl命令看起来像这样:

curl -H "Authorization: bearer MY_AUTHORIZATION_TOKE" -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"public":false,"files":{"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists

我也尝试过。
curl -H "Authorization: bearer MY_AUTHORIZATION_TOKE" -X POST -d '{"public":false,"files":{"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists

我可以在不使用授权令牌的情况下创建Gist,而使用的数据完全相同:

curl -X POST -d '{"public":true,"files":{"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists

但在这种情况下它将是匿名的

如果我试图将其发布为公共内容,则结果相同

无论如何,Github都会返回给我

HTTP/1.1 404 Not Found
{
  "message": "Not Found"
}

我很确定我已经被授权了,因为 curl -H "Authorization: bearer MY_AUTHORIZATION_TOKE" https://api.github.com/user 返回了我的用户详细信息。
应用程序的范围如下: https://github.com/login/oauth/authorize?client_id=...&scope=gist 因此,它应该具有读写权限。

使用个人身份验证令牌,这对我来说没有问题。 - Tegra Detra
1个回答

1

您的OAuth2令牌似乎没有所需的gist范围。

如果您使用curl命令运行-v参数,则可以查看发送请求的范围(X-OAuth-Scopes标头)以及成功使用发送的令牌执行请求所需的范围(X-Accepted-OAuth-Scopes标头)。

如果您在X-OAuth-Scopes标头值中未看到gist列出,则这是您的问题。


在这种情况下,就像我之前提到的那样,你将作为匿名用户发布要点。但事实并非如此。 - Max
1
当您使用 -v curl 参数运行命令 "curl -H "Authorization: bearer MY_AUTHORIZATION_TOKE" -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"public":false,"files":{"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists" 时,您会看到我提到的标题值是什么? - Kevin Sawicki
或者您可以检查 curl -u“用户名:密码”https://api.github.com/authorizations,如果在作用域数组中有“gists”。 - varesa

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