如何用PHP通过Twitter API获取关注者关注日期并制作折线图
获取Twitter关注者的关注日期
嗨,刚好碰到过类似的问题!你当前用的followers/list.json端点(Twitter API v1.1)确实不会返回关注者关注你的日期信息——这个接口只提供关注者的基础用户数据,完全不涉及关注关系的时间戳。
要拿到关注日期,你需要分两步操作:
1. 先批量获取所有关注者的ID
推荐先用followers/ids.json端点拿到所有关注者的ID列表,这个接口的速率限制比followers/list宽松很多,适合批量拉取:
$parameters = array('count' => 5000); // 单次请求最多可获取5000个ID $response = $this->api->get('followers/ids.json', $parameters); $followerIds = $response->ids;
2. 查询每个关注者的关注关系时间
接下来,针对每个关注者的ID,调用friendships/show.json接口,传入你的用户ID(或用户名)和目标关注者的ID,这个接口会返回包含关注关系创建时间的详细数据。
单个关注者的查询示例:
// 替换成你的用户ID(或screen_name),以及目标关注者的ID $parameters = array( 'source_id' => '你的用户ID', 'target_id' => '某关注者的ID' ); $relationship = $this->api->get('friendships/show.json', $parameters); // 提取关注者关注你的时间戳:先确认对方仍在关注你,再取创建时间 $followedAt = $relationship->relationship->source->followed_by ? $relationship->relationship->created_at : null;
关键注意点:
- 速率限制要重视:
friendships/show在v1.1的普通用户认证下,每15分钟只能发15次请求。如果你的关注者很多,一定要做节流处理——比如分批请求、添加延迟,避免触发限制被封号。 - API v2的更优方案:如果可以切换到Twitter API v2,推荐用
users/:source_user_id/following/:target_user_id端点,它直接返回关注关系的created_at字段,而且速率限制更友好,批量操作效率更高。 - 异常处理:要考虑用户已取消关注的情况,此时
followed_by会返回false,对应的created_at就没有参考价值了,需要过滤掉这类数据。
拿到followedAt时间戳后,你就可以把它转换成合适的格式,用来生成折线图的时间轴数据啦!
内容的提问来源于stack exchange,提问作者user3608179
相关产品推荐
相关产品推荐

