users google create admindirectory java google-api google-api-java-client google-admin-sdk google-directory-api

java - create - google directory



members.list() en Google Admin SDK Directory API(Java) (2)

Tengo un código (en Java) para listar a todos los members de un grupo en un dominio personal de Google Apps. Esto usa la API de Google Directory.

Aquí está el fragmento:

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); } }

Esto funciona bien, pero para cualquier grupo, no se enumeran más de exactly 200 members , aunque un grupo realmente tiene más usuarios. Traté de buscar el límite en la función members.list() que estoy usando, pero no pude encontrarlo en la documentación de Google para la API del directorio. ¿Hay algún límite? En caso afirmativo, ¿puedo enumerar de alguna manera a todos los usuarios?


pageToken el código para usar el atributo pageToken , como se muestra a continuación:

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); }

Me gustaría agregar que el primer pageToken de cualquier Directory.Members.List es nulo. Uno puede verificar esto, cambiando la condición del bucle while de pageToken!=null a true . Este cambio listará a todos los miembros una y otra vez repetidamente.


Eche un vistazo a los atributos maxResults y pageToken en members.list () . La página no especifica pero creo que 200 es tanto el valor predeterminado de maxResults como el máximo. Tu aplicación debe verificar la existencia del atributo pageToken en los resultados. Si está configurado, tienes al menos una página más de resultados para obtener. Siga pasando por los resultados hasta que pageToken no esté configurado.