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

使用OpenGraph API向Instagram发图遇(#100)无效消息数据错误

解决Instagram私信图片发送成功但返回2534015错误的问题

使用Laravel的joelbutcher/facebook-graph-sdk 6.0.0向Instagram发送图片时,图片能成功送达,但API返回(#100) Invalid message data(子错误码2534015),而Meta官方API测试工具发送相同参数却无报错。以下是针对性的排查和解决方向:

1. 对齐Graph API版本

Meta测试工具默认使用较新的API版本,而SDK可能默认使用旧版本,不同版本的参数校验规则存在差异。检查并统一SDK的API版本:

$fb = new Facebook\Facebook([
    'app_id' => env('FACEBOOK_APP_ID'),
    'app_secret' => env('FACEBOOK_APP_SECRET'),
    'default_graph_version' => 'v18.0', // 与测试工具使用的版本保持一致
]);

2. 调整platform字段的位置

部分API版本要求platform字段嵌套在recipient对象内,而非作为顶级参数。修改参数结构:

$params = [
    'recipient' => [
        'id' => $recipient_id,
        'platform' => 'instagram' // 移至recipient内部
    ],
    'messaging_type' => 'RESPONSE',
    'message' => [
        'attachment' => [
            'type' => 'image',
            'payload' => [
                'url' => $attachment['url'],
                'is_reusable' => true
            ]
        ]
    ]
];

3. 移除is_reusable参数

is_reusable是Messenger平台专属参数,Instagram私信API可能不支持该字段,移除后测试:

$params['message']['attachment']['payload'] = [
    'url' => $attachment['url']
];

4. 校验请求的原始内容

通过日志打印SDK发送的原始请求体,对比测试工具的请求,排查是否存在SDK自动添加的多余字段或序列化问题:

// 打印参数日志
\Log::info('Instagram Message Params:', $params);

// 获取SDK的原始请求内容
$request = $fb->request('POST', '/me/messages', $params);
\Log::info('Raw Request Body:', $request->getBody()->getContents());

5. 确认图片URL的可访问性

确保图片URL是公开可访问的,Meta服务器能正常抓取(无防盗链、权限限制或HTTPS证书问题)。可以用curl工具测试:

curl -I "你的图片URL"

内容的提问来源于stack exchange,提问作者Stefano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:13