Вывод списка пользователей в приложениях Java с помощью Microsoft Graph

В этой статье описано, как расширить приложение, созданное в разделе Создание приложений Java, с помощью Microsoft Graph и проверки подлинности только для приложений с помощью пользовательских API Microsoft Graph. Вы используете Microsoft Graph для перечисления пользователей в вашей организации.

  1. Откройте Graph.java и добавьте в класс следующую функцию Graph .

    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. Замените пустую listUsers функцию в App.java следующей.

    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. Запустите приложение, войдите в систему и выберите вариант 4, чтобы получить список пользователей.

    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
    

Описание кода

Рассмотрим код в getUsers функции.

Доступ к коллекции

Этот метод возвращает коллекцию пользователей. Большинство API в Microsoft Graph, возвращающих коллекцию, не возвращают все доступные результаты в одном ответе. Вместо этого они используют разбиение на страницы для возврата части результатов, предоставляя метод для клиентов, чтобы запросить следующую страницу.

Размеры страниц по умолчанию

API, использующие разбиение на страницы, реализуют размер страницы по умолчанию. Для пользователей значение по умолчанию — 10. Клиенты могут запрашивать больше (или меньше) с помощью параметра запроса $top . В getUsersдобавление $top выполняется со свойством top в конфигурации запроса.

Примечание.

Значение, заданное в top , является верхней границей, а не явным числом. API возвращает число пользователей до указанного значения.

Получение последующих страниц

Если на сервере доступно больше результатов, ответы коллекции содержат @odata.nextLink свойство с URL-адресом API для доступа к следующей странице. Клиентская библиотека Java предоставляет getOdataNextLink метод для объектов ответа коллекции. Если этот метод возвращает значение, отличное от NULL, доступны дополнительные результаты.

Сортировка коллекций

Функция использует orderBy свойство в конфигурации запроса для запроса результатов, отсортированных по отображаемым именам пользователей. Это свойство добавляет параметр запроса $orderby в вызов API.

Следующее действие