Google Admin SDK目录API(Java)中的members.list()

我有一段代码(在Java中)列出个人Google Apps域上组的所有members 。 这使用谷歌目录API。

这是片段:

 public static void listMembers(String groupKey,Directory service) throws IOException { Members res = service.members().list(groupKey).execute(); List members = res.getMembers(); int count = 0; if (members == null || members.size() == 0) { System.out.println(); System.out.println("No members found."); } else { System.out.println(); System.out.println("Members of "+groupKey); for (Member member : members) { count++; System.out.println(member.getEmail()); } System.out.println(count); } } 

这样可以正常工作,但对于任何组,列出的exactly 200 members不超过exactly 200 members ,尽管组实际上有更多用户。 我试图搜索我正在使用的members.list()函数的限制,但是在Directory API的Google文档中找不到它。 有这样的限制吗? 如果是的话,我可以以某种方式列出所有用户吗?

看一下members.list()上的maxResults和pageToken属性。 该页面未指定,但我认为200是maxResults的默认值和最大值。 您的应用需要检查结果中是否存在pageToken属性。 如果已设置,则至少还要再抓一页结果。 继续循环结果直到未设置pageToken。

我修改了代码以使用pageToken属性,如下所示:

 public static void listMembers(String groupKey,Directory service) throws IOException { Directory.Members.List res = service.members().list(groupKey); Members mbrs; List members ; int count = 0; String pageToken; do{ mbrs = res.execute(); members = mbrs.getMembers(); System.out.println(); System.out.println("Members of "+groupKey); for (Member member : members) { count++; System.out.println(member.getEmail()); } pageToken = mbrs.getNextPageToken(); //System.out.println(res.getPageToken()); //The first pageToken of any Directory.Members.List is null. res.setPageToken(pageToken); System.out.println(count); }while(pageToken!=null); } 

我想补充一点,任何Directory.Members.List的第一个pageToken都为null。 可以通过将while循环的条件从pageToken!=null更改为true来validation这一点。 此更改将反复列出所有成员一遍又一遍。