Compartir a través de


Enumeración de usuarios en aplicaciones java con Microsoft Graph

En este artículo, ampliará la aplicación que creó en Compilación de aplicaciones Java con Microsoft Graph y autenticación de solo aplicación con las API de usuario de Microsoft Graph. Use Microsoft Graph para enumerar los usuarios de su organización.

  1. Abra Graph.java y agregue la siguiente función a la Graph clase .

    public static UserCollectionResponse getUsers() throws Exception {
        // Ensure client isn't null
        if (_appClient == null) {
            throw new Exception("Graph has not been initialized for app-only auth");
        }
    
        return _appClient.users().get(requestConfig -> {
            requestConfig.queryParameters.select = new String[] { "displayName", "id", "mail" };
            requestConfig.queryParameters.top = 25;
            requestConfig.queryParameters.orderby = new String[] { "displayName" };
        });
    }
    
  2. Reemplace la función vacía listUsers en App.java por lo siguiente.

    private static void listUsers() {
        try {
            final UserCollectionResponse users = Graph.getUsers();
    
            // Output each user's details
            for (User user: users.getValue()) {
                System.out.println("User: " + user.getDisplayName());
                System.out.println("  ID: " + user.getId());
                System.out.println("  Email: " + user.getMail());
            }
    
            final Boolean moreUsersAvailable = users.getOdataNextLink() != null;
            System.out.println("\nMore users available? " + moreUsersAvailable);
        } catch (Exception e) {
            System.out.println("Error getting users");
            System.out.println(e.getMessage());
        }
    }
    
  3. Ejecute la aplicación, inicie sesión y elija la opción 4 para enumerar a los usuarios.

    Please choose one of the following options:
    0. Exit
    1. Display access token
    2. List users
    3. Make a Graph call
    2
    User: Adele Vance
      ID: 05fb57bf-2653-4396-846d-2f210a91d9cf
      Email: AdeleV@contoso.com
    User: Alex Wilber
      ID: a36fe267-a437-4d24-b39e-7344774d606c
      Email: AlexW@contoso.com
    User: Allan Deyoung
      ID: 54cebbaa-2c56-47ec-b878-c8ff309746b0
      Email: AllanD@contoso.com
    User: Bianca Pisani
      ID: 9a7dcbd0-72f0-48a9-a9fa-03cd46641d49
      Email: NO EMAIL
    User: Brian Johnson (TAILSPIN)
      ID: a8989e40-be57-4c2e-bf0b-7cdc471e9cc4
      Email: BrianJ@contoso.com
    
    ...
    
    More users available? True
    

Código explicado

Tenga en cuenta el código de la getUsers función .

Acceso a una colección

Este método devuelve una colección de usuarios. La mayoría de las API de Microsoft Graph que devuelven una colección no devuelven todos los resultados disponibles en una única respuesta. En su lugar, usan la paginación para devolver una parte de los resultados al tiempo que proporcionan un método para que los clientes soliciten la página siguiente.

Tamaños de página predeterminados

Las API que usan la paginación implementan un tamaño de página predeterminado. Para los usuarios, el valor predeterminado es 10. Los clientes pueden solicitar más (o menos) mediante el parámetro de consulta $top . En getUsers, la adición $top se realiza con la top propiedad en la configuración de la solicitud.

Nota:

El valor establecido en top es un límite superior, no un número explícito. La API devuelve un número de usuarios hasta el valor especificado.

Obtención de páginas posteriores

Si hay más resultados disponibles en el servidor, las respuestas de colección incluyen una @odata.nextLink propiedad con una dirección URL de API para acceder a la página siguiente. La biblioteca cliente de Java proporciona el getOdataNextLink método en objetos de respuesta de colección. Si este método devuelve valores no NULL, hay más resultados disponibles.

Ordenar colecciones

La función usa la orderBy propiedad en la configuración de la solicitud para solicitar resultados ordenados por los nombres para mostrar de los usuarios. Esta propiedad agrega el parámetro de consulta $orderby a la llamada API.

Paso siguiente