You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Facebook Bot附件处理:获取文件名/MIME类型及正确下载方法

Facebook公共主页Bot媒体附件获取与下载方案

1. 获取附件文件名与MIME类型的方法

  • MIME类型:Webhook推送的原始结构中,message.attachment.type字段仅返回附件大类(如示例中的image),无法获取精确MIME类型(如image/jpeg、image/png)。精确MIME值需要在请求附件资源时,从响应头的Content-Type字段中读取。
  • 文件名:Webhook推送结构默认不携带用户上传的原始文件名,可通过两种方式获取:
    • 请求附件资源时,从响应头的Content-Disposition字段中解析filename对应的参数值
    • 若需要获取用户上传时的原始文件名,需先调用Meta消息接口查询附件完整元数据,返回结果中会包含原始文件名字段

2. fbsbx域名附件正确下载方法(解决文件损坏问题)

直接下载文件损坏的核心原因是:请求CDN资源时未携带合法鉴权参数,被Facebook拦截返回了HTML格式的错误提示页,将错误页内容作为媒体文件存储就会出现损坏无法打开的问题。
按以下步骤操作即可正常下载:

  • 拼接鉴权参数:不要直接请求payload中返回的原始URL,需要在URL末尾拼接access_token参数,参数值为你在Meta开发者平台获取的、对应公共主页的长期有效访问令牌,拼接格式示例:
    https://lookaside.fbsbx.com/ig_messaging_cdn/?asset_id=xxx&signature=xxx&access_token=你的主页长期访问令牌
    
  • 设置合法请求头:请求时不要使用脚本默认的UA标识(如Python requests默认的python-requests/x.x.x),需要添加常规浏览器的User-Agent头,示例值:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
  • 响应校验:拿到响应后先检查响应头的Content-Type值,如果返回值为text/html,说明鉴权失败,请检查访问令牌是否有效、是否拥有该消息的读取权限;如果返回值为对应媒体类型(如image/*、video/*),再进行后续存储操作
  • 正确存储文件:读取响应的二进制流直接写入本地文件即可,不要对二进制内容做UTF-8等编码转换,避免文件内容被篡改。

注意:payload中返回的fbsbx链接为临时有效链接,有效期通常为2-4小时,收到消息推送后请及时下载,链接过期后需要重新调用接口获取新的资源地址。

内容的提问来源于stack exchange,提问作者W-illian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:48:14