Google Admin SDK目录API(Java)中的members.list()
我有一段代码(Java)可以列出个人谷歌应用程序域中一个组的所有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
成员。这使用谷歌目录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循环的条件来验证这一点=空
到真
。此更改将反复列出所有成员