android - 如何使用 twitter4j 获取所有 Twitter 关注者的列表?

标签 android twitter twitter4j

我一直想知道是否有办法访问所有 Twitter 关注者列表。

我们尝试使用调用 REST API通过 twitter4j:

  public List<User> getFriendList() {
    List<User> friendList = null;
    try {
        friendList = mTwitter.getFollowersList(mTwitter.getId(), -1);

    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (TwitterException e) {
        e.printStackTrace();
    }
    return friendList;
}

但它仅返回 20 个关注者的列表。

我尝试使用相同的 call in loop ,但它会导致速率限制异常 - 表示我们不允许在短时间内发出太多请求。

我们有办法解决这个问题吗?

最佳答案

您绝对应该使用getFollowersIDs。正如文档所述,这会返回 ID 对象的数组(列表)。请注意,它会导致列表一次分为大约 5000 个 ID 的页面。要开始分页,请提供值 -1 作为光标。 API 的响应将包含 previous_cursor 和 next_cursor 以允许来回分页。

棘手的部分是处理光标。如果你能做到这一点,那么你就不会有只有 20 个关注者的问题。

第一次调用 getFollowersIDs 时需要将光标指定为 -1。对于后续调用,您需要通过获取下一个光标来更新光标值,如循环的 while 部分中所做的那样。

        long cursor =-1L;
        IDs ids;
        do {
            ids = twitter.getFollowersIDs(cursor);
            for(long userID : ids.getIDs()){
                friendList.add(userID);
            }
        } while((cursor = ids.getNextCursor())!=0 );

这里有一个非常好的引用: https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/friendsandfollowers/GetFriendsIDs.java

现在,如果用户拥有超过 75000 名关注者,您将不得不等待(请参阅 Vishal 的回答)。 前 15 次调用将产生大约 75000 个 ID。然后你必须睡15分钟。然后再调用 15 个电话,依此类推,直到获得所有关注者。这可以在 for 循环之外使用简单的 Thread.sleep(time_in_milliseconds) 来完成。

关于android - 如何使用 twitter4j 获取所有 Twitter 关注者的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51192948/

相关文章:

python - 无法访问带有漂亮汤的推文 ID

java - Twitter4j Api 不工作,java.net.UnknownHostException : api. twitter.com

android - 以编程方式自动打开手机电源

android - Webview 在某些机器人上不显示 Twitter

javascript - twitter 如何在不重新加载页面的情况下更改 url?

java - Twitter4j.properties 文件未被读取

java - 如何获取twitter cosumer_key和consumer_secret

android - 是否可以在 Tracker 级别配置自定义维度?

android - java.lang.NoSuchMethodError : No static method setOnApplyWindowInsetsListener

android - AndEngine背景图片