Поделиться через


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

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

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

    export async function getUsersAsync(): Promise<PageCollection> {
      // Ensure client isn't undefined
      if (!_appClient) {
        throw new Error('Graph has not been initialized for app-only auth');
      }
    
      return _appClient
        ?.api('/users')
        .select(['displayName', 'id', 'mail'])
        .top(25)
        .orderby('displayName')
        .get();
    }
    
  2. Замените пустую listUsersAsync функцию в index.ts на следующую.

    async function listUsersAsync() {
      try {
        const userPage = await graphHelper.getUsersAsync();
        const users: User[] = userPage.value;
    
        // Output each user's details
        for (const user of users) {
          console.log(`User: ${user.displayName ?? 'NO NAME'}`);
          console.log(`  ID: ${user.id}`);
          console.log(`  Email: ${user.mail ?? 'NO EMAIL'}`);
        }
    
        // If @odata.nextLink is not undefined, there are more users
        // available on the server
        const moreAvailable = userPage['@odata.nextLink'] != undefined;
        console.log(`\nMore users available? ${moreAvailable}`);
      } catch (err) {
        console.log(`Error getting users: ${err}`);
      }
    }
    
  3. Запустите приложение, войдите в систему и выберите вариант 2, чтобы получить список пользователей.

    [1] Display access token
    [2] List users
    [3] Make a Graph call
    [0] Exit
    
    Select an option [1...3 / 0]: 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 для сортировки ответа

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