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

如何使用Twitter API提取指定用户推文?附JavaScript代码

使用Twitter JSONP接口提取用户推文的实现分析与优化建议

你采用了JSONP跨域方案来调用Twitter的用户时间线接口,这种方式在早期前端跨域场景中非常实用。先把你的实现代码整理出来:

1. 调用Twitter API的脚本标签

<script src="http://twitter.com/statuses/user_timeline/DoucoureEt.json?callback=updateTweets"></script>

2. 处理推文的回调函数

function updateTweets(tweets) { 
  var tweetSelection = document.getElementById("tweets"); 
  for (var i = 0; i < tweets.length; i++) { 
    tweet = tweets[i]; 
    var option = document.createElement("option"); 
    option.text = tweet.text; 
    option.value = tweet.text.replace("\"", "'"); 
    console.log("The option is: " + option); 
    tweetSelection.options.add(option); 
  } 
  tweetsSelection.selectedIndex = 0; 
}

接下来我指出几个需要注意的问题和优化方向:

  • 未声明的全局变量:循环里的tweet没有使用var/let声明,会自动挂载到全局作用域,容易引发变量冲突。建议修改为:

    let tweet = tweets[i]; // ES6+ 写法
    // 或者兼容旧环境的写法
    var tweet = tweets[i];
    
  • 字符串替换不彻底:replace("\"", "'")只会替换推文文本中的第一个双引号,要替换所有双引号的话,需要使用全局正则表达式:

    option.value = tweet.text.replace(/"/g, "'");
    
  • 变量名拼写错误:最后一行的tweetsSelection是笔误,应该和前面声明的tweetSelection保持一致,否则会抛出Uncaught ReferenceError错误。

  • API端点与协议问题:目前Twitter的旧版v1 API已经不再维护,原http://twitter.com/statuses/user_timeline/端点可能已经失效,且现在所有Twitter API都强制要求HTTPS协议。如果需要继续使用,注意新版API需要OAuth认证,不再支持简单的JSONP调用。

  • 潜在XSS风险:直接将推文文本赋值给option.text虽然浏览器会自动转义部分特殊字符,但为了更安全,建议对文本进行HTML转义处理:

    function escapeHtml(text) {
      const div = document.createElement('div');
      div.textContent = text;
      return div.innerHTML;
    }
    // 使用时
    option.text = escapeHtml(tweet.text);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:38:23