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
相关产品推荐
相关产品推荐

