如何在Google Directory API中获取超过500个用户的列表?

时间:2014-12-13 06:45:35

标签: java google-api google-directory-api

我编写了一个代码,该代码使用Google Directory API从服务器获取用户帐户信息。它专门提取用户列表,但默认情况下,系统按用户电子邮件地址的字母顺序返回100个用户的列表。可以通过将 Directory.Users.List.setMaxResults 设置为500(这是上限)来更改此设置。但万一,我把它设置为500以上,调用返回异常。

所以我的问题是,如果服务器有超过500个用户,是否可以在一个列表中获取所有用户(超过500个)?如果没有,是否有任何解决方法来获取所有用户?

注意 - 我正在使用目录api

的Java客户端库

2 个答案:

答案 0 :(得分:0)

像这样使用pageToken:

List<User> usersList = new ArrayList<User>();
com.google.api.services.admin.directory.Directory.Users.List ul = dir.users().list().setCustomer(customerId).setMaxResults(Config.MAX_API_RESULTS);
do {
    Users curPage = ul.execute();
    usersList.addAll(curPage.getUsers());
    ul.setPageToken(curPage.getNextPageToken());
} while(ul.getPageToken() != null && ul.getPageToken().length() > 0);

答案 1 :(得分:0)

如您所说,最大页面大小为500,允许值为1到500.因此,您必须获得例外。
为了获得下一页用户,API会为响应中的下一页发送pageToken。使用它来获取下一组500个用户,依此类推。 实际API看起来像这样 - https://developers.google.com/admin-sdk/directory/v1/reference/users/list