如何在Spring Social Twitter中获得20多位朋友?

时间:2014-10-10 12:28:50

标签: java spring twitter spring-social spring-social-twitter

我正在使用Spring Social Twitter来检索朋友的用户名。 这是我的代码。

@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个朋友)

2 个答案:

答案 0 :(得分:3)

您必须遍历所有游标并按如下方式收集结果:

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

答案 1 :(得分:1)

必须有另一个错误,spring文档特别指出:

getFriends()

“检索经过身份验证的用户最多可以访问5000个用户的列表。”

http://docs.spring.io/spring-social-twitter/docs/1.0.5.RELEASE/api/org/springframework/social/twitter/api/FriendOperations.html#getFriendIds%28%29

您确定要进行查询的用户有更多朋友吗?也许你可以尝试使用getFriendsIds或getFriends(字符串名称)。