2

我正在使用 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 个朋友)

4

2 回答 2

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...
于 2016-05-09T20:33:24.277 回答
1

肯定有另一个错误,spring文档特别指出:

得到朋友()

“检索经过身份验证的用户关注的最多 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(string name)。

于 2014-10-10T12:38:36.880 回答