使用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
相关产品推荐
相关产品推荐

