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

时间:2015-07-06 10:47:33

标签: java google-api google-api-java-client google-admin-sdk google-directory-api

我有一段代码(在Java中)列出了个人Google Apps域中组的所有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); } } 。这使用了Google Directory API。

以下是摘录:

exactly 200 members

这样可以正常工作,但是对于任何组,都列出了不超过members.list()的组,尽管组实际上有更多用户。我尝试搜索我正在使用的mm=int(raw_input("enter a number")) ans = { "1":"a", "2":"b", "3":"c", "4":"d", "5":"e", "6":"f", "7":"g", "8":"h", "9":"i", "10":"j", "11":"k", "12":"l" } v=(mm-1)%12 w=(mm-2)%12 x=(mm-3)%12 y= (mm-4)%12 print ans[str(v)] print ans[str(w)] print ans[str(x)] print ans[str(y)] 函数的限制,但在目录API的Google文档中找不到它。有这样的限制吗?如果是,我可以以某种方式列出所有用户吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

我修改了代码以使用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都为null。通过将while循环的条件从pageToken!=null更改为true,可以验证这一点。此更改将反复列出所有成员。