【发布时间】:2016-09-19 00:11:09
【问题描述】:
我想重现以下 curl -F 请求 (from the Messenger API) 将图像文件和参数发送到 Messenger 的发送 API:
curl \
-F recipient='{"id":"USER_ID"}' \
-F message='{"attachment":{"type":"image", "payload":{}}}' \
-F filedata=@/tmp/shirt.png \
"https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
我正在使用请求,我尝试了很多很多东西(包括使用正确的收件人 ID 等。例如:
recipient = '{"id":"USER_ID"}'
message = '{"attachment":{"type":"image", "payload":{}}}'
files = [("recipient", recipient), ("message", message), ("filedata", open(imagePath, 'rb'))]
r = requests.post('https://graph.facebook.com/v2.6/me/messages?access_token=ACCESS_TOKEN', files=files)
我也试过了:
files = {"recipient" : recipient, "message" : message, "filedata" : open(imagePath, "rb")}
我几乎总是从 Messenger 收到此响应错误:
'{"error":{"message":"(#100) param recipient must be non-empty.","type":"OAuthException","code":100,"fbtrace_id":"xxxxx"}}'
我在这里不知所措。我可能以某种方式滥用了 Requests 语法,或者向 API 发送了格式不正确的字符串,但我已经阅读了 Requests 文档并浏览了 StackOverflow 的问题,但无法解决我的问题。谢谢。
【问题讨论】:
-
文件变量必须是字典,而不是元组数组。
-
如果您确信这是问题所在,您能否在答案中提供示例代码?我已经尝试过使用字典。语法是:files = {“recipient”:收件人,“message”:消息,“filedata”:open(imagePath,“rb”)}
-
感谢您发布您的问题。它帮助我调试了对营销 api 的类似 POST 请求!
-
乐于助人。 :)
标签: python facebook curl python-requests messenger