0

这是一个后续问题: uploading a file to imgur via python

我刚刚上传了一张图片到 Imgur,但我注意到它不公开供查看。在他们的 API 网站上,他们说上传后,如果您希望它公开,您应该将其提交给画廊。

我编写了一个可以用一个图像执行此操作的小型应用程序,但我不确定它是否不起作用,因为我没有正确提出请求,或者因为我可能缺少使用 Oauth2 模块,到目前为止我还没有需要使用它(我只是上传图片,但我不需要查看其他用户正在使用我的应用上传什么)。

import base64
import json
import requests

from base64 import b64encode

client_id = '6a06c6bb8360e78'

headers = {"Authorization": "Client-ID 6a06c6bb8360e78"}

api_key = '6a06c6bb8360e78'

url = "https://api.imgur.com/3/upload.json"

j1 = requests.post(
    url, 
    headers = headers,
    data = {
        'key': api_key, 
        'image': b64encode(open('1.jpg', 'rb').read()),
        'type': 'base64',
        'name': '1.jpg',
        'title': 'Picture no. 1'
    }
)


data=json.loads(j1.text)['data']
data_id=data['id']

data_id_str=data_id.encode('ascii','ignore')

# Now I try to push the iamge to the gallery with id data:

url_gallery = "https://api.imgur.com/3/gallery/image/{id}.json"

r2 = requests.post(url_gallery, headers=headers, data={'title': 'First image', 'terms': '1', 'id': data_id_str})

我做完后得到的答案:r2.text 是 403 错误:

u'{"data":{"error":"Unauthorized",
"request":"\\/3\\/gallery\\/image\\/{id}.json",
"parameters":"terms = 1, id = 1jhIc2R, title = First
image","method":"POST"},"success":false,"status":403}'

这是用于提交图像的 Imgur API 链接,我不确定我在哪里做错了:https ://api.imgur.com/endpoints/gallery#to-gallery

4

1 回答 1

3

来自 Imgur 的艾伦在这里。您需要通过身份验证才能提交到画廊(因此出现未经授权的错误)。目前看起来您正在匿名上传,然后还尝试匿名提交到画廊。您需要从 OAuth2 获取用于图库部分的 access_token。

于 2013-04-29T17:51:58.540 回答