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

Twitter4J中如何通过Twitter用户ID查询对应用户名及个人简介?

Twitter4J通过用户ID获取用户名与个人简介的实现方案

问题排查

你现有代码的核心错误为:

  • twitter.showUser() 方法返回的是User类型对象,所有用户属性都需要从该对象中读取,你错误的对用户ID的字符串值调用getDescription()方法,String类不存在该方法,因此无法执行
  • showUser()支持直接传入long类型的用户ID,无需转成String类型调用

核心结论

Twitter4J完全支持直接通过用户ID获取用户的用户名、个人简介等所有公开信息,无需额外转换。

单条查询实现

如果用户量少可以直接遍历调用单查询接口:

for (Long userId : followers) {
    // 直接传入long类型用户ID获取用户对象
    User user = twitter.showUser(userId);
    // 获取用户名(@后展示的唯一账号名)
    String username = user.getScreenName();
    // 获取用户个人简介
    String bio = user.getDescription().toLowerCase();
    // 输出测试
    System.out.printf("ID:%d | 用户名:@%s | 简介:%s%n", userId, username, bio);
}

批量查询优化实现

单条查询会快速消耗API调用限额,推荐使用批量查询接口,单次最多支持查询100个用户:

import java.util.Arrays;
import twitter4j.ResponseList;
import twitter4j.User;

// 转换ID集合为long数组
long[] idArray = followers.stream().mapToLong(Long::longValue).toArray();
int batchSize = 100;
// 分批查询
for (int i = 0; i < idArray.length; i += batchSize) {
    int endIdx = Math.min(i + batchSize, idArray.length);
    long[] batchIds = Arrays.copyOfRange(idArray, i, endIdx);
    // 批量调用仅消耗1次API配额
    ResponseList<User> batchUsers = twitter.lookupUsers(batchIds);
    for (User user : batchUsers) {
        long userId = user.getId();
        String showName = user.getName(); // 用户自定义显示名称
        String accountName = user.getScreenName(); // 唯一用户名
        String bio = user.getDescription().toLowerCase();
        // 此处添加你的业务逻辑
    }
}

注意事项

  • 请确保你的Twitter开发者账号已申请users.read接口权限,否则会返回权限异常
  • 如需要获取用户的其他属性,可直接从User对象的对应get方法中读取
  • 批量查询的接口限额远高于单条查询,用户量大于10的场景优先使用批量实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03