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

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

  1. Добавьте следующую функцию в graph.py.

    async def get_users(self):
        query_params = UsersRequestBuilder.UsersRequestBuilderGetQueryParameters(
            # Only request specific properties
            select = ['displayName', 'id', 'mail'],
            # Get at most 25 results
            top = 25,
            # Sort by display name
            orderby= ['displayName']
        )
        request_config = UsersRequestBuilder.UsersRequestBuilderGetRequestConfiguration(
            query_parameters=query_params
        )
    
        users = await self.app_client.users.get(request_configuration=request_config)
        return users
    
  2. Замените пустую list_users функцию в main.py на следующую.

    async def list_users(graph: Graph):
        users_page = await graph.get_users()
    
        # Output each users's details
        if users_page and users_page.value:
            for user in users_page.value:
                print('User:', user.display_name)
                print('  ID:', user.id)
                print('  Email:', user.mail)
    
            # If @odata.nextLink is present
            more_available = users_page.odata_next_link is not None
            print('\nMore users available?', more_available, '\n')
    
  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: None
    User: Brian Johnson (TAILSPIN)
      ID: a8989e40-be57-4c2e-bf0b-7cdc471e9cc4
      Email: BrianJ@contoso.com
    
    ...
    
    More users available? True
    

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

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

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

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