Facebook Page Webhook无法接收POST请求,Instagram正常求助
Facebook Page Webhook POST请求无法接收排查方案
问题情况
- 已成功接收Webhook的GET验证请求
- 同一服务器可正常接收Instagram的测试消息及POST请求
- Facebook Page的POST请求无法送达服务器
- 已完成基础检查:服务器端点支持GET/POST请求、Facebook开发者后台Webhook配置正确、已订阅Page的feed更新字段

针对性排查步骤
确认Page权限关联有效性
检查你的App是否已获取对应Facebook Page的pages_show_list、pages_read_engagement权限,且Page管理员已完成权限授权。权限未正确绑定是POST请求无法推送的常见原因,即使订阅了字段,无权限则不会触发推送。排查签名验证逻辑
GET请求通过不代表POST的签名验证没问题,需确认服务器端是否正确实现Facebook的签名校验:- 从请求头提取
X-Hub-Signature-256字段 - 用App Secret作为密钥,对原始请求体做HMAC-SHA256加密
- 将加密结果与
X-Hub-Signature-256中sha256=前缀后的内容比对
若验证失败,服务器可能直接丢弃请求,导致误以为未收到。
- 从请求头提取
查看Webhook错误日志
进入Facebook开发者后台的对应App Webhook设置页,找到「Error Logs」(在Sample Payloads旁),这里会显示Facebook推送失败的具体原因,比如超时、服务器500错误、签名验证失败等,是最直接的排查依据。检查服务器防火墙/安全组
确认服务器防火墙或云服务商安全组未拦截Facebook的Webhook推送IP段,Facebook的推送IP范围可通过官方途径查询,需确保这些IP能正常访问你的端点。手动触发Page事件测试
手动在Facebook Page发布动态或创建测试评论,触发feed更新事件,随后立即查看服务器访问日志,确认是否有来自Facebook的POST请求记录(即便验证失败,日志中也会有请求痕迹)。检查请求体解析逻辑
Facebook Webhook的POST请求体为JSON格式,需确保服务器端使用原始请求体进行签名验证,部分框架会自动解析JSON,若用了解析后的内容而非原始字节,会导致签名验证失败。
内容的提问来源于stack exchange,提问作者Ashwini Bansal
相关产品推荐
相关产品推荐

