小编Azu*_*ash的帖子

如何向Imgur的APIv3形成匿名请求

不久前,我创建了一个python函数,它接受了一个图像的URL并将其传递给Imgur的API v2.由于我已被告知v2 API将被弃用,因此我尝试使用API​​ v3.

正如他们在Imgur API文档中所说:

如果您想要匿名上传图片(没有将图片绑定到帐户),[发送]带有client_id的授权标头以及您的请求[...]也可以使用.这让我们知道哪个应用程序正在访问API.**

授权:Client-ID YOURCLIENTID

我不清楚(特别是他们提出的斜体)他们是否意味着标题应该是{'Authorization': 'Client-ID ' + clientID},或者{'Authorization: Client-ID ': clientID},或者{'Authorization:', 'Client-ID ' + clientID}其他变化......

无论哪种方式,我都试过,这就是我得到的(使用Python 2.7.3):

def sideLoad(imgURL):
    img = urllib.quote_plus(imgURL)
    req = urllib2.Request('https://api.imgur.com/3/image', 
                          urllib.urlencode([('image', img), 
                                            ('key', clientSecret)]))
    req.add_header('Authorization', 'Client-ID ' + clientID)
    response = urllib2.urlopen(req)
    return response.geturl()
Run Code Online (Sandbox Code Playgroud)

在我看来,这就像Imgur要我做的一切:我有正确的端点,将数据传递给urllib2.Request使它成为一个POST请求,根据Python文档,我传递的图像参数与表格 - 编码的URL,我也尝试将它作为POST参数给我的客户端秘密,因为我收到一个错误,说我需要一个ID(即使没有提到我需要在相关文档中的任何地方使用我的客户端秘密).我添加了Authorization标头,它似乎是正确的形式,所以...为什么我收到错误400:错误的请求?

附带问题:如果我能看到Imgur返回的实际错误,我可能自己调试它,但由于它返回错误的HTTP状态,Python会死掉并给我一个令人作呕的堆栈跟踪.有什么方法可以让Python停止抱怨并给我错误消息JSON,我知道Imgur返回?

python api upload imgur

6
推荐指数
1
解决办法
2815
查看次数

标签 统计

api ×1

imgur ×1

python ×1

upload ×1