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

Google Admin SDK目录API(Java)中的members.list(),java,google-api,google-api-java-client,google-admin-sdk,google-directory-api,Java,Google Api,Google Api Java Client,Google Admin Sdk,Google Directory Api,我有一段代码(Java)可以列出个人谷歌应用程序域中一个组的所有成员。这使用谷歌目录API 以下是片段: public static void listMembers(String groupKey,Directory service) throws IOException { Members res = service.members().list(groupKey).execute(); List<Member> members = res.ge

我有一段代码(Java)可以列出个人谷歌应用程序域中一个组的所有
成员。这使用谷歌目录API

以下是片段:

public static void listMembers(String groupKey,Directory service) throws IOException {
        Members res = service.members().list(groupKey).execute();

        List<Member> 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);
        }
    }
publicstaticvoidlistmembers(stringgroupkey,目录服务)抛出IOException{
Members res=service.Members().list(groupKey.execute();
List members=res.getMembers();
整数计数=0;
if(members==null | | members.size()==0){
System.out.println();
System.out.println(“未找到成员”);
}否则{
System.out.println();
System.out.println(“成员”+groupKey);
代表(成员:成员){
计数++;
System.out.println(member.getEmail());
}
系统输出打印项次(计数);
}
}

这很好,但是对于任何组,虽然一个组实际上有更多的用户,但只列出了不超过200个成员。我试图搜索我正在使用的
members.list()
函数的限制,但在谷歌的目录API文档中找不到它。有这样的限制吗?如果是,我可以列出所有用户吗?

查看上的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<Member> 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);
    }
publicstaticvoidlistmembers(stringgroupkey,目录服务)抛出IOException{
Directory.Members.List res=service.Members().List(groupKey);
MBR成员;
成员名单;
整数计数=0;
字符串pageToken;
做{
mbrs=res.execute();
members=mbrs.getMembers();
System.out.println();
System.out.println(“成员”+groupKey);
代表(成员:成员){
计数++;
System.out.println(member.getEmail());
}
pageToken=mbrs.getNextPageToken();
//System.out.println(res.getPageToken());//任何目录.Members.List的第一个pageToken为空。
res.setPageToken(pageToken);
系统输出打印项次(计数);
}while(pageToken!=null);
}
我想添加,任何Directory.Members.List的第一个pageToken都是null。可以通过从
pageToken更改while循环的条件来验证这一点=空
。此更改将反复列出所有成员