members.list() 在 Google 管理 SDK 目录 API (Java)
members.list() in Google Admin SDK Directory API (Java)
我有一段代码(在 Java 中)可以列出个人 Google 应用程序域中的所有 members
群组。这使用 google 目录 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);
}
}
这很好用,但对于任何组,列出的用户数不超过 exactly 200 members
,尽管一个组实际上有更多用户。我试图搜索我正在使用的 members.list()
函数的限制,但在目录 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<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);
}
我想补充一点,任何 Directory.Members.List 的第一个 pageToken 都是空的。可以通过将 while 循环的条件从 pageToken!=null
更改为 true
来验证这一点。此更改将一遍又一遍地列出所有成员。
我有一段代码(在 Java 中)可以列出个人 Google 应用程序域中的所有 members
群组。这使用 google 目录 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);
}
}
这很好用,但对于任何组,列出的用户数不超过 exactly 200 members
,尽管一个组实际上有更多用户。我试图搜索我正在使用的 members.list()
函数的限制,但在目录 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<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);
}
我想补充一点,任何 Directory.Members.List 的第一个 pageToken 都是空的。可以通过将 while 循环的条件从 pageToken!=null
更改为 true
来验证这一点。此更改将一遍又一遍地列出所有成员。