如何用Koala Gem创建Facebook可推广帖及调试创建失败问题
你遇到的这个GraphMethodException(错误码100)虽然提示权限或对象不存在,但既然能成功调用get_connections(page_id,"promotable_posts"),说明页面ID和基础权限是没问题的,问题大概率出在令牌权限细节、参数格式或者API调用的细微要求上,给你几个具体的调试步骤:
确认页面访问令牌的完整性:
你当前使用的page_graph对应的令牌是不是页面专属访问令牌?用户令牌即使有ads_management权限,创建页面可推广帖还是需要页面令牌,并且必须包含pages_manage_posts和pages_read_engagement权限(这两个是发帖的核心权限,ads_management是广告管理,和发帖权限是分开的)。可以用官方的令牌调试工具检查你的令牌权限列表,确保这两个权限都存在且有效。修正参数中的格式问题:
你的参数里有两个潜在问题:link参数值是www.link.com,必须加上完整的协议头https://,否则Facebook会识别为无效链接;- 确认
picture对应的URL是公开可访问的,Facebook服务器需要能抓取到这张图片,如果图片有防盗链或者需要登录才能访问,会导致请求失败。
简化参数做最小化测试:
先把参数简化到最基础的形式,比如:params = { "message" => 'Test post', "link" => "https://www.link.com" }用这个参数调用
put_connections,如果能成功创建,再逐个添加name、caption等参数,排查是不是某个参数的内容或格式触发了错误(比如description过长、包含特殊字符等)。绕过Koala直接调用Graph API:
用Facebook官方的Graph API测试工具,直接发送POST /{page_id}/promotable_posts请求,带上同样的令牌和参数。如果这里也失败,会返回更精准的错误提示;如果这里成功,说明是Koala的参数处理有问题——可以检查Koala是否自动转换了参数键名(比如把下划线转成驼峰),或者有没有遗漏必要的请求头。检查页面状态和广告权限:
确认你的Facebook页面没有被限制发帖或推广功能:可以在页面设置的“违规记录”里查看有没有处罚,或者在Business Manager中确认页面的广告账户关联正常,没有权限限制。
内容的提问来源于stack exchange,提问作者Deepak raj

