在使用他们的API V3向Github发布私人要点的战斗已经相当一段时间后,我几乎放弃了。几乎。可能是某个人也遇到过类似问题或者知道可能是以下行为的原因:
现在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
因此,它应具有读写权限。
答案 0 :(得分:0)
您的OAuth2令牌似乎没有所需的gist
范围。
如果使用curl
参数运行-v
命令,您可以看到发送到请求的范围(X-OAuth-Scopes
标头)和请求所需的范围(X-Accepted-OAuth-Scopes
标头)使用发送的令牌成功执行。
如果您没有在gist
标头值中看到X-OAuth-Scopes
,那么这就是您的问题。