Microsoft Graph API: получить организацию пользователей

Я использую Microsoft Graph API, чтобы получить некоторые сведения о пользователе. Я также использую AD для аутентификации и авторизации.

В этом приложении пользователь после входа в систему будет искать некоторых пользователей, и ему нужны некоторые данные для всех пользователей, соответствующих запросу.

Я попал ниже пользователи API с фильтрами, но я не получаю никаких подробностей о названии компании для соответствующих пользователей.

https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'jo')

Ниже ответ на тот же

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.nextLink": "https://graph.microsoft.com/v1.0/users?$skiptoken=X%2744537074020001000000203A636F6D7061735F766A61407465737473636F7270696F67726F75702E6E657429557365725F33386664353661362D366361612D343939332D393264642D383439633938613039393033B900000000000000000000%27",
  "value": [
        {
            "businessPhones": [],
            "displayName": "John Doe",
            "givenName": "John",
            "jobTitle": null,
            "mail": null,
            "mobilePhone": null,
            "officeLocation": null,
            "preferredLanguage": null,
            "surname": "Doe",
            "userPrincipalName": "[email protected]",
            "id": "c8f63ba1-5150-44c1-b456-468040f12345"
        }
  ]
}

Что мне нужно сделать, чтобы получить название компании для пользователей моей организации?

Под организацией вы имеете в виду административную единицу или пользователей в отдельном арендаторе?

Marc LaFleur 09.04.2019 17:27

я имею в виду поле названия компании для каждого пользователя. Раньше я получал его в старом графическом API с помощью пользователей. Но теперь я не могу его получить.

Foramkumar Parekh 10.04.2019 08:28

@ForamkumarParekh О, если вы просто хотите получить название компании, вы можете использовать бета-интерфейс API. Вы получите его, позвонив graph.microsoft.com/beta/users{userid} Вы можете увидеть ответ в моем ответе.

Tony Ju 10.04.2019 09:55

@Tony, за предложение использовать бета-версию, но это то, чего я пытался избежать, поскольку многие бета-версии имеют некоторые изменения, и в зависимости от этих изменений мне, возможно, снова придется обновить код. Поэтому я надеялся получить решение в версии 1.0. В любом случае спасибо. Бета в порядке. Вы можете опубликовать это как ответ, и я приму его.

Foramkumar Parekh 10.04.2019 13:29

@ForamkumarParekh Спасибо. Я добавил это к ответу. Кроме того, вы можете найти журнал изменений графа здесь docs.microsoft.com/en-us/graph/…

Tony Ju 10.04.2019 13:48

Вам не нужна и не должна использоваться бета-версия для этого. Инструкции см. в ответе ниже.

Marc LaFleur 10.04.2019 20:15
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
3
6
2 835
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

I want this details for all the users from just one login

Это невозможно. Единственный способ получить получить информацию об организации — использовать https://graph.microsoft.com/v1.0/organization API.

Вам необходимо предоставить токен доступа для вызова этого API. В вашем приложении вы входите в систему с одним пользователем, чтобы получить токен доступа.

Если вы используете common в URL-адресе запроса токена, вы получите организацию по умолчанию для этого пользователя, вошедшего в систему.

Если вы используете определенный арендатор в URL-адресе запроса, вы получите сведения об организации для этого арендатора.

Если вы просто хотите получить название компании пользователя, вы можете вызвать https://graph.microsoft.com/beta/users/{userid}, чтобы получить его.

У меня более 1 организации. Я хочу знать, какой пользователь относится к какой организации. Так что этот ответ не помогает.

Foramkumar Parekh 09.04.2019 11:40

@ForamkumarParekh Если вы используете обозреватель графиков для вызова этого API, вы получите организацию по умолчанию, которая использовалась для создания этого пользователя. Если вы используете логин.микрософтонлайн.com{tenantid}/oauth2/v2.0/token для получения токена доступа, вы получите сведения об организации, касающиеся назначенного вами tenantid.

Tony Ju 09.04.2019 11:57

@ForamkumarParekh Вы будете членом только одной организации и гостем другой организации.

Tony Ju 09.04.2019 12:02

Спасибо, Тони, за разъяснения. Но я считаю, что даже обращение к API организации может предоставить организацию по умолчанию для вошедшего в систему пользователя. Мне нужны эти данные для всех пользователей только с одного входа. Я предполагаю, что есть некоторая неправильная интерпретация вопроса. Позвольте мне сказать вам, что я создаю приложение, в котором пользователь после входа в систему может получить доступ к данным других пользователей. Мне нужны данные организации для пользователей в списке

Foramkumar Parekh 09.04.2019 12:09

знания, которыми вы поделились, были полезны, но они не помогли мне получить то, что мне было нужно. Извиняюсь.

Foramkumar Parekh 10.04.2019 13:25
Ответ принят как подходящий

Ресурс user по умолчанию возвращает только подмножество свойств. Согласно документация:

Note: Getting a user returns a default set of properties only (businessPhones, displayName, givenName, id, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname, userPrincipalName). Use $select to get the other properties and relationships for the user object.

Другими словами, вам нужно добавить в запрос параметр $select, в котором перечислены свойства, которые вы хотите вернуть. Например, если вы хотите получить id, userPrincipalName и companyName, вы должны использовать:

https://graph.microsoft.com/v1.0/users?$select=displayName,id,jobTitle,companyName

Полный набор доступных свойств можно найти в документации Тип ресурса пользователя.

имеет смысл и устраняет рассмотрение конечной точки бета-версии, обсуждавшееся ранее. Единственное незначительное отличие, которое я заметил, заключается в том, что по какой-то причине https://graph.microsoft.com/beta/users возвращает множество свойств, включая companyName, в то время как v1 возвращает только набор по умолчанию, если вы явно не выбрали..

Rohit Saigal 11.04.2019 03:10

Если вы добавите $whatif=true к параметрам запроса, вы заметите, что разница между бета-версией и версией 1.0 заключается в том, что версия 1.0 добавляет $select по умолчанию, а бета-версия — нет.

Marc LaFleur 11.04.2019 15:13

Другие вопросы по теме