使用Facebook Marketing API通过系统用户读取广告评论失败求助
问题:Facebook Marketing API读取广告评论失败排查
问题描述
- 系统用户已拥有页面和广告账户的完全访问权限
- 使用页面访问令牌读取页面原生帖子评论完全正常,但针对广告的
effective_object_story_id操作时出现异常:- 请求
/{effective_object_story_id}仅返回id、created_time、message三个字段,其中message值为{{product.brand}} - 请求
/{effective_object_story_id}/comments得到空数组,但直接访问facebook.com/{effective_object_story_id}网页能看到大量用户评论
- 请求
可能的原因及解决步骤
1. 访问令牌的权限/类型不匹配
你当前使用的是页面访问令牌,但广告衍生帖子的评论读取可能需要更精准的权限或令牌类型:
- 必须确保令牌包含
ads_read权限(广告数据读取的核心权限),同时不能少pages_read_engagement、pages_show_list这两个页面互动读取权限 - 尝试改用系统用户生成的广告账户访问令牌请求,而非单纯的页面令牌——广告相关资源的访问,广告账户级令牌的兼容性更强
2. effective_object_story_id指向的是模板而非真实帖子
你拿到的effective_object_story_id大概率是广告创意的动态模板ID,而非实际投放后生成的用户可见真实帖子:
- 字段里的
{{product.brand}}就是模板占位符的直接证明,这类模板本身没有真实评论 - 解决方式:先通过广告ID调用
/{ad-id}/creative获取创意详情,从中提取实际关联的object_story_id(单帖广告);如果是动态产品广告(DPA),需要通过/{ad-id}/insights或广告创意的dynamic_ad_asset字段,找到投放后生成的具体帖子实例ID
3. API请求的参数缺失
默认请求/{object-id}/comments可能不会返回完整评论数据,需要明确指定字段和过滤参数:
- 明确指定需要返回的字段:
GET /{target-post-id}/comments?fields=id,message,created_time,from - 如果存在嵌套回复,添加
filter=stream参数获取全层级评论:GET /{target-post-id}/comments?fields=id,message,created_time,from&filter=stream
4. 隐私过滤(优先级较低)
网页能看到但API返回空的情况,可能是部分评论因用户隐私设置(如仅好友可见)被API过滤,但这种情况不会导致全量为空,仅作为排查补充项
内容的提问来源于stack exchange,提问作者dannepanne
相关产品推荐
相关产品推荐

