2014-10-10 45 views
2

我使用Spring社交Twitter來檢索朋友的用戶名。 這是我的代碼。如何在Spring社交Twitter上獲得20多個朋友?

@Controller 
@RequestMapping("/") 
    public class HelloController { 

    private Twitter twitter; 

    private ConnectionRepository connectionRepository; 

    @Inject 
    public HelloController(Twitter twitter, ConnectionRepository connectionRepository) { 
     this.twitter = twitter; 
     this.connectionRepository = connectionRepository; 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public String helloTwitter(Model model) { 
     if (connectionRepository.findPrimaryConnection(Twitter.class) == null) { 
      return "redirect:/connect/twitter"; 
     } 

     model.addAttribute(twitter.userOperations().getUserProfile()); 
     CursoredList<TwitterProfile> friends = twitter.friendOperations().getFriends(); 
     model.addAttribute("friends", friends); 
     for (TwitterProfile frnd : friends) { 
      System.out.println(frnd.getName()); 
     } 
     return "hello"; 
    } 

} 

但它只檢索到20個朋友。我怎麼能得到所有的朋友? (說,如果我有1000個朋友)

+0

我有一個模糊的記憶,Twitter的API頁面這類數據,因此你必須反覆用X'塊檢索'元素(在這種情況下,顯然是20)。對你沒有多大幫助,但在Twitter API頁面中應該有一些關於它的文檔。 – Mena 2014-10-10 12:32:44

+0

我試圖爲此找到一個文檔。仍然找不到任何。 – 2014-10-10 12:36:53

+0

根據[文檔](http://docs.spring.io/spring-social-twitter/docs/1.1.0.RELEASE/apidocs/org/springframework/social/twitter/api/FriendOperations.html#getFriends% 28%29),此方法應該使用對Twitter API的多次調用來檢索最多5000個用戶。 – 2014-10-10 12:39:19

回答

2

你必須通過所有的遊標循環和收集結果如下:

// ... 
    CursoredList<TwitterProfile> friends = twitter.friendOperations().getFriends(); 
    ArrayList<TwitterProfile> allFriends = friends; 
    while (friends.hasNext()) { 
     friends = twitter.friendOperations().getFriendsInCursor(friends.getNextCursor()); 
     allFriends.addAll(friends); 
    } 
    // process allFriends... 
+0

你應該使用getFriendIdsInCursor不超過速率限制。 – 2017-07-15 10:51:38