Как получить иерархические данные организации Teams в C # с помощью Graph API

#c# #azure-active-directory #microsoft-graph-api

#c# #azure-active-directory #microsoft-graph-api

Вопрос:

В Microsoft teams есть вкладка под названием «Организация», которая показывает что-то вроде этого: введите описание изображения здесь

Есть ли какой-либо способ получить эти данные на C # с помощью Graph API?

Прямо сейчас у меня есть

 var users = await graphClient.Users.Request().GetAsync();
 

который возвращает массив всех пользователей, и у каждого пользователя есть его имя и должность. Этого недостаточно для создания организационной диаграммы, поскольку она не показывает, как связаны разные пользователи. Какой вызов Graph API мне нужно выполнить, чтобы получить данные для создания организационной диаграммы?

Ответ №1:

Если вы используете Microsoft Graph SDK для C #, вы можете использовать приведенный ниже код для подключения пользователей к менеджеру:

 var usersWithMgr = await graphServiceClient.Users.Request().Expand("manager").GetAsync();
 

Результат:
введите описание изображения здесь

Комментарии:

1. Спасибо, мой последний вызов api выглядит как var users = await graphClient . Пользователи.Запрос ().Развернуть («менеджер») .Выберите(u => создать { u.DisplayName, u.JobTitle, u.AccountEnabled}). GetAsync(); , u.AccountEnabled важно!

2. Есть ли способ использовать GraphServiceClient с пользовательским доменом или способ получить идентификатор клиента и сведения о подключении? Или они могут быть предоставлены только администратором?

Ответ №2:

Я узнал, что вы можете вызвать graph для пользователей, чтобы получить всех пользователей в домене, затем для каждого пользователя выполните вызов, как указано здесь: https://docs.microsoft.com/en-us/graph/api/user-list-manager?view=graph-rest-1.0amp;tabs=csharp

Это приведет к получению менеджера, которым можно управлять в иерархическом представлении.

Обновить:

             var users = await graphClient.Users.Request().Expand("manager")
            .Select(u => new { u.DisplayName, u.JobTitle, u.AccountEnabled}).GetAsync();