如何通过Twitter API获取推文的浏览量及点赞数?
如何通过Twitter API获取推文的浏览量(View counts)?
Twitter已为推文添加了浏览量功能,我希望通过指定Tweet ID获取该数据。目前我有一段可获取推文点赞数的代码,但修改后尝试获取view_count字段时,API返回结果里没有这个字段,官方文档中也找不到相关说明,求解决方案。
原获取点赞数的代码:
const BEARER_TOKEN = 'BEARER_TOKEN'; // Returns the number of likes on the Tweet with the given tweetID. async function getTweetLikes(tweetID) { const response = await fetch( `https://api.twitter.com/1.1/statuses/show/${tweetID}.json`, { method: 'GET', headers: { Authorization: `Bearer ${BEARER_TOKEN}`, 'Content-Type': 'application/json' } } ); const tweet = await response.json(); return tweet.favorite_count; } // Get the Tweet ID of the current page const tweetID = window.location.pathname.split('/')[3]; console.log('tweetID', tweetID); getTweetLikes(tweetID).then((likes) => { console.log(`Tweet ${tweetID} has ${likes} likes.`); });
我原本想修改成同时获取点赞数和浏览量,示例逻辑如下,但无法获取view_count:
const tweet = await response.json(); return [tweet.favorite_count, tweet.view_count]; ... getTweetLikesAndViews(tweetID).then((result) => { console.log(`Tweet ${tweetID} has ${result[0]} likes and ${result[1]} views.`); });
解决方案
1. 切换到Twitter API v2
view_count字段仅在Twitter API v2的推文端点中返回,旧的v1.1接口statuses/show不支持该字段,必须使用v2的tweets端点。
2. 修改后的完整代码
const BEARER_TOKEN = 'BEARER_TOKEN'; // 获取推文的点赞数和浏览量 async function getTweetLikesAndViews(tweetID) { const response = await fetch( `https://api.twitter.com/2/tweets/${tweetID}?tweet.fields=public_metrics`, { method: 'GET', headers: { Authorization: `Bearer ${BEARER_TOKEN}` } } ); const data = await response.json(); // 从public_metrics中提取目标数据 const likes = data.data.public_metrics.like_count; const views = data.data.public_metrics.view_count; return [likes, views]; } // 获取当前页面的Tweet ID const tweetID = window.location.pathname.split('/')[3]; console.log('tweetID', tweetID); getTweetLikesAndViews(tweetID).then(([likes, views]) => { console.log(`Tweet ${tweetID} has ${likes} likes and ${views} views.`); });
关键说明
- 必须显式指定
tweet.fields=public_metrics参数,API才会返回包含view_count、like_count的public_metrics对象。 - v2接口的点赞数对应
public_metrics.like_count(替代v1.1的favorite_count),浏览量对应public_metrics.view_count。 - 确保你的Bearer Token拥有访问Twitter API v2的权限,若之前使用的是v1.1令牌,需确认权限范围或重新生成。
内容的提问来源于stack exchange,提问作者yayabosh
相关产品推荐
相关产品推荐

