Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用twitter4j获取所有twitter关注者的列表?_Android_Twitter_Twitter4j - Fatal编程技术网

Android 如何使用twitter4j获取所有twitter关注者的列表?

Android 如何使用twitter4j获取所有twitter关注者的列表?,android,twitter,twitter4j,Android,Twitter,Twitter4j,我一直在想,是否有办法访问所有twitter追随者列表 我们已尝试使用via twitter4j呼叫: public List<User> getFriendList() { List<User> friendList = null; try { friendList = mTwitter.getFollowersList(mTwitter.getId(), -1); } catch (IllegalStateExceptio

我一直在想,是否有办法访问所有twitter追随者列表

我们已尝试使用via 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;
}
public List getFriendList(){
List-friendList=null;
试一试{
friendList=mTwitter.getFollowersList(mTwitter.getId(),-1);
}捕获(非法状态){
e、 printStackTrace();
}捕获(twitter异常){
e、 printStackTrace();
}
返回好友列表;
}
但它只返回20个追随者的列表

我尝试过使用相同的方法,但它会导致一个速率限制异常,即不允许我们在很短的时间间隔内发出太多请求


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

就这样改变,试试看,这对我很有用

    try {
        Log.i("act twitter...........", "ModifiedCustomTabBarActivity.class");
        // final JSONArray twitterFriendsIDsJsonArray = new JSONArray();
        IDs ids = mTwitter.mTwitter.getFriendsIDs(-1);// ids
        // for (long id : ids.getIDs()) {
        do {
            for (long id : ids.getIDs()) {               


                String ID = "followers ID #" + id;
                String[] firstname = ID.split("#");
                String first_Name = firstname[0];
                String Id = firstname[1];

                Log.i("split...........", first_Name + Id);

                String Name = mTwitter.mTwitter.showUser(id).getName();
                String screenname = mTwitter.mTwitter.showUser(id).getScreenName();


  //            Log.i("id.......", "followers ID #" + id);
    //          Log.i("Name..", mTwitter.mTwitter.showUser(id).getName());
    //          Log.i("Screen_Name...", mTwitter.mTwitter.showUser(id).getScreenName());
    //          Log.i("image...", mTwitter.mTwitter.showUser(id).getProfileImageURL());


            }
        } while (ids.hasNext());

    } catch (Exception e) {
        e.printStackTrace();
    }

就这样改变,试试看,这对我有用

    try {
        Log.i("act twitter...........", "ModifiedCustomTabBarActivity.class");
        // final JSONArray twitterFriendsIDsJsonArray = new JSONArray();
        IDs ids = mTwitter.mTwitter.getFriendsIDs(-1);// ids
        // for (long id : ids.getIDs()) {
        do {
            for (long id : ids.getIDs()) {               


                String ID = "followers ID #" + id;
                String[] firstname = ID.split("#");
                String first_Name = firstname[0];
                String Id = firstname[1];

                Log.i("split...........", first_Name + Id);

                String Name = mTwitter.mTwitter.showUser(id).getName();
                String screenname = mTwitter.mTwitter.showUser(id).getScreenName();


  //            Log.i("id.......", "followers ID #" + id);
    //          Log.i("Name..", mTwitter.mTwitter.showUser(id).getName());
    //          Log.i("Screen_Name...", mTwitter.mTwitter.showUser(id).getScreenName());
    //          Log.i("image...", mTwitter.mTwitter.showUser(id).getProfileImageURL());


            }
        } while (ids.hasNext());

    } catch (Exception e) {
        e.printStackTrace();
    }
这是一个棘手的问题。 您应该指定是使用应用程序令牌还是每用户令牌,以及获取追随者ID的用户数

在应用程序令牌的情况下,您每15分钟只收到15个呼叫。每次呼叫最多可获取5000个followers\u id。这使您每15分钟最多有75K个追随者ID。 如果您获取关注者ID的任何用户拥有超过75K个关注者,您将立即获得rate\u limit错误。如果要为多个用户获取数据,则需要在代码中构建强大的速率限制处理,并且要非常耐心

这同样适用于朋友ID

我不必为一个给定的用户获取超过75K的追随者/朋友,但想想看,我不知道这是否还有可能。

这是一个棘手的问题。 您应该指定是使用应用程序令牌还是每用户令牌,以及获取追随者ID的用户数

在应用程序令牌的情况下,您每15分钟只收到15个呼叫。每次呼叫最多可获取5000个followers\u id。这使您每15分钟最多有75K个追随者ID。 如果您获取关注者ID的任何用户拥有超过75K个关注者,您将立即获得rate\u limit错误。如果要为多个用户获取数据,则需要在代码中构建强大的速率限制处理,并且要非常耐心

这同样适用于朋友ID

我不必为一个给定的用户获取超过75K的追随者/朋友,但想想看,我不知道这是否可能了。

试试这个

ConfigurationBuilder confbuilder=new ConfigurationBuilder();
confbuilder.setOAuthAccessToken(accessToken)
.setOAuthAccessTokenSecret(secretToken)
.setOAuthConsumerKey(TwitterOAuthActivity.CONSUMER_键)
.setOAuthConsumerCret(TwitterOAuthActivity.CONSUMER_SECRET);
Twitter=newtwitterfactory(confbuilder.build()).getInstance();
PagableResponseList跟随者列表;
ArrayList=新建ArrayList();
尝试
{
followersList=twitter.getFollowersList(屏幕名,光标);
for(int i=0;i
试试这个

ConfigurationBuilder confbuilder=new ConfigurationBuilder();
confbuilder.setOAuthAccessToken(accessToken)
.setOAuthAccessTokenSecret(secretToken)
.setOAuthConsumerKey(TwitterOAuthActivity.CONSUMER_键)
.setOAuthConsumerCret(TwitterOAuthActivity.CONSUMER_SECRET);
Twitter=newtwitterfactory(confbuilder.build()).getInstance();
PagableResponseList跟随者列表;
ArrayList=新建ArrayList();
尝试
{
followersList=twitter.getFollowersList(屏幕名,光标);
for(int i=0;i
您绝对应该使用
getFollowersIDs
。如文档所述,这将返回
id
对象的数组(列表)。请注意,它会导致列表一次分为5000个ID左右的页面。要开始分页,请提供值-1作为光标。来自API的响应将包括上一个\u游标和下一个\u游标,以允许来回分页

棘手的部分是处理光标。如果你能做到这一点,那么你就不会有只获得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 );
这里有一个很好的参考:

现在,如果用户拥有超过75000名追随者,您将不得不等待(参见Vishal的答案)。
前15个电话将为您提供大约75000个ID。然后你必须睡15分钟。然后再打15个电话,以此类推,直到你得到所有的追随者。这可以使用一个简单的
线程来完成。在
for
循环的
外部使用sleep(以毫秒为单位的时间)

您肯定应该使用
getFollowersIDs
。正如文件所述,这是