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

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

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

    public static Task<UserCollectionResponse?> GetUsersAsync()
    {
        // Ensure client isn't null
        _ = appClient ??
            throw new NullReferenceException("Graph has not been initialized for app-only auth");
    
        return appClient.Users.GetAsync((config) =>
        {
            /* Only request specific properties */
            config.QueryParameters.Select = ["displayName", "id", "mail"];
            /* Get at most 25 results */
            config.QueryParameters.Top = 25;
            /* Sort by display name */
            config.QueryParameters.Orderby = ["displayName"];
        });
    }
    
  2. Замените пустую ListUsersAsync функцию в Program.cs на следующую.

    async Task ListUsersAsync()
    {
        try
        {
            var userPage = await GraphHelper.GetUsersAsync();
    
            if (userPage?.Value == null)
            {
                Console.WriteLine("No results returned.");
                return;
            }
    
            // Output each users's details
            foreach (var user in userPage.Value)
            {
                Console.WriteLine($"User: {user.DisplayName ?? "NO NAME"}");
                Console.WriteLine($"  ID: {user.Id}");
                Console.WriteLine($"  Email: {user.Mail ?? "NO EMAIL"}");
            }
    
            // If NextPageRequest is not null, there are more users
            // available on the server
            // Access the next page like:
            // var nextPageRequest = new UsersRequestBuilder(userPage.OdataNextLink, _appClient.RequestAdapter);
            // var nextPage = await nextPageRequest.GetAsync();
            var moreAvailable = !string.IsNullOrEmpty(userPage.OdataNextLink);
    
            Console.WriteLine($"\nMore users available? {moreAvailable}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error getting users: {ex.Message}");
        }
    }
    
  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
    

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

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

  • Он получает коллекцию пользователей
  • Он использует Select для запроса определенных свойств
  • Он использует Top для ограничения числа возвращенных пользователей
  • Он использует OrderBy для сортировки ответа

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