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

Express.js调用Twitter API查询推文返回invalid json报错如何解决

问题排查及修复方案

核心错误点

  • 接口请求方法错误:Twitter API v2 查询单条推文的接口要求使用 GET 请求,你的代码中使用了POST请求,直接触发权限拒绝,返回的错误文本开头为Application cannot perform write actions,Unexpected token A的报错就是解析这段文本的首字符触发的。
  • 未校验响应状态直接解析JSON:403错误返回的是纯文本错误提示,而非JSON格式,直接调用res.json()会触发解析错误。
  • 权限配置问题:返回状态码403 Forbidden说明你的请求未通过接口的权限校验。

权限校验排查项

  • 确认你的BEARER_TOKEN复制正确,无多余空格或遗漏字符。
  • 登录Twitter开发者后台,确认你的应用已经开通tweet.read权限,且所属的API套餐支持单条推文查询接口的调用。
  • 确认你请求的tweet id对应推文为公开状态,私密账号的推文无法用应用级Bearer Token读取。
  • 确认你当前的API调用额度未耗尽,免费套餐额度用完后也会返回403错误。

修正后的参考代码

router.post('/', async function(req, res, next) {
  try {
    const tweet_id = req.body.tweet_id;
    console.log(tweet_id);
    // 请求方法改为GET
    const response = await fetch(`https://api.twitter.com/2/tweets/${tweet_id}`, {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${BEARER_TOKEN}`,
      }
    });
    // 先校验响应状态再解析内容
    if (!response.ok) {
      const errorText = await response.text();
      console.log('接口请求错误:', response.status, errorText);
      res.render('index');
      return;
    }
    const tweetData = await response.json();
    console.log('查询结果:', tweetData);
    res.render('index');
  } catch (err) {
    console.log('程序运行错误:', err);
    res.render('index');
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:06:01