小编典典

Github-api通过python + urllib2传递json-data时给出404

json

我有以下代码,应执行在github上创建新下载的第一部分。它应该使用POST发送json-data。

jsonstring = '{"name": "test", "size": "4"}'
req = urllib2.Request("https://api.github.com/repos/<user>/<repo>/downloads")
req.add_header('Authorization', 'token ' + '<token>')
result = urllib2.urlopen(req, jsonstring)

如果我, jsonstring从中删除urlopen(),它不会失败,并向我提供可用下载列表。但是,如果我尝试发布json-
string,则会收到404错误。

问题一定是与json或我发送它的方式有关,但我无法弄清楚问题出在哪里。<...>实际代码中的字符串正确,我刚刚从帖子中删除了它们

curl在命令行上尝试了大致相同的方法,但认证方法略有不同,并且可以正常工作。

经测试:

Works(返回所需的json):

curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads

作品:

curl -H 'Authorization: token <token>' https://api.github.com/

不起作用(返回“无效的凭据”):

curl -H 'Authorization: token <invalid_token>' https://api.github.com/

不起作用(“未找到”):

curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads

这似乎不是特定于python代码的问题。json
POST数据似乎很好,并且OAuth令牌授权似乎(至少部分地)正常工作。但是,将它们放在一起后,它将停止工作。


阅读 63

收藏
2020-07-27

共1个答案

小编典典

我终于可以解决了,为什么不起作用。

我没有正确设置授权令牌的自动生成范围。我使用的令牌没有被“授权”做任何修改,并且使用它的所有尝试修改某项操作(添加下载)的操作均失败。

我必须在授权中添加正确的作用域才能使其正常工作。

2020-07-27