2012-01-17 3 views
6

Как я могу получить список друзей друга или последователя, используя Twitter4J?Список друзей друга с помощью Twitter4J

Использование getFriendsId(), я могу только получить список друзей/последователей этого текущего пользователя, прошедшего проверку подлинности. Я хочу получить список друзей последователя или друга аутентифицированного пользователя.

ответ

2
long lCursor = -1; 
IDs friendsIDs = twitter.getFriendsIDs(userID, lCursor); 
System.out.println(twitter.showUser(userID).getName()); 
System.out.println("=========================="); 
do 
{ 
    for (long i : friendsIDs.getIDs()) 
    { 
     System.out.println("follower ID #" + i); 
     System.out.println(twitter.showUser(i).getName()); 
    } 
}while(friendsIDs.hasNext()); 
+0

Что такое userID в приведенном выше коде? –

+4

Разве этот код не нападает на API, и вы можете быть запрещены превышением лимита? – rubdottocom

+0

Это значительно превысит лимиты ставок (dev.twitter.com/rest/public/rate-limiting). Используйте getFriendsList вместо getFriendsID. Проверьте мой ответ на этой странице. –

6

Это будет показано имя вашего друга.

 User u1 = null ; 
     long cursor = -1; 
     IDs ids; 
     System.out.println("Listing followers's ids."); 
     do { 
       ids = twitter.getFollowersIDs("username", cursor); 
      for (long id : ids.getIDs()) { 
       System.out.println(id); 
       User user = twitter.showUser(id); 
       System.out.println(user.getName()); 
      } 
     } while ((cursor = ids.getNextCursor()) != 0); 
+0

Предупреждение: есть хороший шанс, что это даст вам скидку при первом запуске. – dranxo

+0

Я не понимаю, почему вы продолжаете называть метод getFollowersIds. Это для пейджинга ответов? Итак, предыдущий ответ sandeepsharat вернул бы только подмножество всех друзей? – 5agado

+1

@rcompton Разве мы не можем преодолеть эту проблему? – TheLittleNaruto

0

А что-то вроде получить список друзей? https://dev.twitter.com/docs/api/1.1/get/friends/list

Согласно документации:

Возвращает cursored коллекции пользовательских объектов для каждого пользователя указанного пользователя следующий (иначе известного как свои «друзья»).

Существует интерфейс для этого в twitter4j.api, но я не могу понять, как использовать его:

PagableResponseList<User> getFriendsList(String screenName, long cursor) throws TwitterException; 
3

Вам только нужно сделать это:

Twitter twitter = mTwitterApp.getTwitterInstance(); 
long cursor = -1; 
List<User> users=twitter.getFriendsList(mTwitterApp.getUserID(), cursor); 

Здесь пользователи - это список пользователей, которые являются вашими друзьями (вы следите за ними). mTwitterApp.getUserID() - ваш логин, который является длинным значением.

+1

, это будет только список первых 5000 пользователей, так как значение курсора равно -1. – cherit

1
  PagableResponseList<User> friendlist= twitter.getFriendsList(user.getScreenName(), -1); 

     int sizeoffreindlist= friendlist.size(); 

     for(int i=0;i<sizeoffreindlist;i++) 
     { 
      System.out.println(friendlist.get(i)); 
     } 

Это предоставит вам список из 20 друзей в качестве ограничения по умолчанию 20

0

Этот код работает! (без превышения лимитов). Написал twitter4j documentation и другие ответы на StackOverflow.

try { 
      // get friends 
      long cursor = -1; 
      PagableResponseList<User> pagableFollowings; 
      do { 
       pagableFollowings = twitter.getFriendsList(twitter.getId(), cursor); 
       for (User user : pagableFollowings) { 
        listFriends.add(user); // ArrayList<User> 
       } 
      } while ((cursor = pagableFollowings.getNextCursor()) != 0); 

      // get followers 
      cursor = -1; 
      PagableResponseList<User> pagableFollowers; 
      do { 
       pagableFollowers = twitter.getFollowersList(twitter.getId(), cursor); 
       for (User user : pagableFollowers) { 
        listFollowers.add(user); // ArrayList<User> 
       } 
      } while ((cursor = pagableFollowers.getNextCursor()) != 0); 

     } catch (TwitterException e) { 
      printError(e); 
     } 
0

Вы можете использовать

twitter.getFollowersIDs("username", cursor); 

http://twitter4j.org/javadoc/twitter4j/api/FriendsFollowersResources.html#getFollowersIDs-java.lang.String-long- , который возвращает только 5000 пользователь не все пользователи. Кроме того, оно ограничено 15 раз в 15 минут. (https://dev.twitter.com/rest/reference/get/friends/ids)

Кроме того, вы можете использовать,

twitter.getFollowersList("username", cursor); 

http://twitter4j.org/javadoc/twitter4j/api/FriendsFollowersResources.html#getFollowersList-java.lang.String-long- который также ограничен 20 пользователем. Также он ограничен 15 раз за 15 минут для пользователя auth, 30 раз за 15 минут для приложения auth (https://dev.twitter.com/rest/reference/get/friends/list)

Для неограниченного доступа вы можете посмотреть https://gnip.com/ или получить доступ к пользователю в twitter.

Смежные вопросы