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

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

  1. Добавьте приведенный ниже код в класс GraphHelper.

    public static function getUsers(): Models\UserCollectionResponse {
        $configuration = new UsersRequestBuilderGetRequestConfiguration();
        $configuration->queryParameters = new UsersRequestBuilderGetQueryParameters();
        // Only request specific properties
        $configuration->queryParameters->select = ['displayName','id','mail'];
        // Sort by display name
        $configuration->queryParameters->orderby = ['displayName'];
        // Get at most 25 results
        $configuration->queryParameters->top = 25;
    
        return GraphHelper::$appClient->users()->get($configuration)->wait();
    }
    
  2. Замените пустую listUsers функцию в main.php следующим кодом.

    function listUsers(): void {
        try {
            $users = GraphHelper::getUsers();
    
            // Output each user's details
            foreach ($users->getValue() as $user) {
                print('User: '.$user->getDisplayName().PHP_EOL);
                print('  ID: '.$user->getId().PHP_EOL);
                $email = $user->getMail();
                $email = isset($email) ? $email : 'NO EMAIL';
                print('  Email: '.$email.PHP_EOL);
            }
    
            $nextLink = $users->getOdataNextLink();
            $moreAvailable = isset($nextLink) && $nextLink != '' ? 'True' : 'False';
            print(PHP_EOL.'More users available? '.$moreAvailable.PHP_EOL.PHP_EOL);
        } catch (Exception $e) {
            print(PHP_EOL.'Error getting users: '.$e->getMessage().PHP_EOL.PHP_EOL);
        }
    }
    
  3. Запустите приложение, войдите в систему и выберите вариант 2, чтобы получить список пользователей.

    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 функции.

  • Он получает коллекцию пользователей.
  • Он использует queryParameters->select для запроса определенных свойств
  • Он использует queryParameters->top для ограничения числа возвращенных пользователей
  • Он использует queryParameters->orderby для сортировки ответа

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