使用Python 3.4.1和Urllib3访问Imgur API

1 投票
1 回答
582 浏览
提问于 2025-04-18 07:57

我正在努力理解Imgur的API。我找到了一些关于如何向Imgur发送授权头的好例子,但它们都是用urllib2写的,而我现在用的是Python 3.4.1,只能用urllib3。

所以我尝试了几种方法,但似乎都不太管用。

这个帖子中,我尝试使用basic_auth头:

http = urllib3.PoolManager()
header = urllib3.make_headers(basic_auth="Client-ID" + CLIENT_ID)
r = http.request('GET', 'https://api.imgur.com/3/gallery/r/pics', headers=header)

结果我得到了一个403错误。

这个帖子中,我尝试了另一种方法:

http = urllib3.PoolManager()
header= {"Content-Type": "text", "Authorization": "Client-ID" + CLIENT_ID}
r = http.request('GET', 'https://api.imgur.com/3/gallery/r/pics', headers=header)

结果也是返回了403。

不过,我通过阅读urllib3的文档,离目标又近了一步,尝试把Authorization作为一个字段发送。

http = urllib3.PoolManager()
r = http.request('GET', 'https://api.imgur.com/3/gallery/r/pics', fields={"Authorization": "Client-ID " + CLIENT_ID})

但这次却返回了401。

所以,有人能帮我搞清楚如何用这些方法,或者其他方法,进行基本的匿名与Imgur API的交互吗?

1 个回答

2

根据imgur的API文档,你需要这样发送认证头:

Authorization: Client-ID YOUR_CLIENT_ID

在这一行:

header = urllib3.make_headers(basic_auth="Client-ID" + CLIENT_ID)

你发送的是: Authorization: Client-IDYOUR_CLIENT_ID

这里面需要有一个空格。

撰写回答