【发布时间】:2018-05-24 00:41:47
【问题描述】:
我有一个应用程序,我正在尝试为其创建 Facebook 机器人,它需要向用户发送照片卡。但是,为此我需要获取 Facebook 附件 ID,因为我无法直接从网络上传文件。 (https://developers.facebook.com/docs/messenger-platform/reference/attachment-upload-api/)
我的应用在 Firebase 上,由于某种原因,当我尝试 URL 时,它给了我这个错误:
{ “错误”: { "message": "(#546) 您尝试附加的文件类型不允许。请使用其他格式重试。", “类型”:“OAuthException”, “代码”:546, “error_subcode”:1545026, “fbtrace_id”:“H8qfi28cNvp” } }
我尝试的任何 URL 都会出现这种情况,但这里是一个测试 https://memes-dev.mymemestore.com/mms-tp1pESD7hgWWLiOUziHz.jpg
所以我尝试使用 Google Cloud Storage nodejs api 来获取读取流并像这样发送它
const stream = gcs().bucket('my bucket').file('mms-tp1pESD7hgWWLiOUziHz.jpg').createReadStream();
const message = new formdata();
message.append('message', '{"attachment":{"type":"image", "payload":{"is_reusable":true}}}');
message.append('filedata', stream);
fetch('https://graph.facebook.com/v2.6/me/message_attachments?access_token=<PAGE ACCESS TOKEN>',
{
method: 'POST',
headers: message.getHeaders(),
body: message
})
.then(res => {
console.log(res);
return res.json();
})
.then(json => {
console.log(json);
});
但这给了我以下错误
(#100) 上传的文件数不正确。必须只上传一个文件。
有人知道怎么回事吗?
谢谢
【问题讨论】:
-
由于我的浏览器会立即弹出该 URL 的下载对话框,因此很可能您只是没有使用适当的 Content-Type 标头来提供它。
-
@CBroe 哦,对了!我完全忘记了这一点。
标签: facebook google-cloud-storage