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

使用Mastodon API发布带图片状态时图片未显示的问题求助

解决Mastodon API发布带图片状态的问题

问题原因

你当前用http_build_query()处理请求体,会把数组media_ids转换成media_ids[]=xxx的格式,但Mastodon的statuses/create接口要求media_ids以JSON数组或正确的multipart/form-data数组格式传递,前者的编码方式不匹配接口要求,导致图片无法关联到状态。

方案1:使用JSON格式发送请求体

将请求体编码为JSON字符串,并设置对应的请求头:

$body = [
    'status'        => $desc,
    'media_ids'     => [$media_id]
];

$jsonBody = json_encode($body);

curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);
// 必须设置Content-Type为application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer 你的访问令牌' // 替换为实际的访问令牌
]);

方案2:用multipart/form-data传递数组

直接传递PHP数组给CURLOPT_POSTFIELDS,curl会自动处理为正确的表单格式:

$body = [
    'status'        => $desc,
    'media_ids'     => [$media_id]
];

// 直接传数组,curl自动使用multipart/form-data格式
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer 你的访问令牌'
]);

额外验证项

  • 确认$media_id是媒体上传接口返回的有效ID,且上传请求已成功完成。
  • 确保访问令牌拥有write:statuses和write:media权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:40:20