我有以下代码,应执行在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错误。
, jsonstring
urlopen()
问题一定是与json或我发送它的方式有关,但我无法弄清楚问题出在哪里。<...>实际代码中的字符串正确,我刚刚从帖子中删除了它们
<...>
我curl在命令行上尝试了大致相同的方法,但认证方法略有不同,并且可以正常工作。
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令牌授权似乎(至少部分地)正常工作。但是,将它们放在一起后,它将停止工作。
我终于可以解决了,为什么不起作用。
我没有正确设置授权令牌的自动生成范围。我使用的令牌没有被“授权”做任何修改,并且使用它的所有尝试修改某项操作(添加下载)的操作均失败。
我必须在授权中添加正确的作用域才能使其正常工作。