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

调用Twitter API上传图片时持续出现400 Bad Request错误求助

解决Twitter API图片上传400 Bad Request问题

你的代码核心问题是请求头和请求体格式不匹配:Twitter API接收media_data(base64格式图片)时,要求用application/x-www-form-urlencoded格式提交,但你手动设置了multipart/form-data头,导致请求格式混乱,触发400错误。

按以下步骤修改即可解决:

  • 移除headers里的"content-type": "multipart/form-data"配置,axios会自动根据请求体格式设置正确的Content-Type;也可以明确设置为application/x-www-form-urlencoded
  • 检查encodedImage是否包含多余前缀(比如data:image/jpeg;base64,),如果有需要去掉,只保留纯base64字符串
  • 确保图片文件存在且可读,base64编码过程没有出错

修正后的代码示例:

const encodedImage = fs.readFileSync("/tmp/image.jpg", {
  encoding: "base64",
});
// 可选:如果base64带前缀就清理掉
// const cleanEncodedImage = encodedImage.replace(/^data:image\/jpeg;base64,/, "");

const {
  data: { media_id },
} = await axios.post(
  "https://upload.twitter.com/1.1/media/upload.json",
  {
    media_data: encodedImage, // 或者用清理后的cleanEncodedImage
    media_category: "tweet_image",
  },
  {
    headers: {
      Authorization: authHeaderMedia["Authorization"],
      // 不再手动设置multipart/form-data头
    },
  }
);

额外排查点:

  • 验证authHeaderMedia["Authorization"]的OAuth 1.0a签名是否正确,确保签名流程符合Twitter要求
  • 检查图片大小是否在限制内(单张图片最大5MB,支持JPG/PNG等格式)
  • 可以先用Postman等工具测试API请求,确认参数和签名无误后再迁移到代码中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:54:59