Я использую 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"
}
]
}
Что мне нужно сделать, чтобы получить название компании для пользователей моей организации?
я имею в виду поле названия компании для каждого пользователя. Раньше я получал его в старом графическом API с помощью пользователей. Но теперь я не могу его получить.
@ForamkumarParekh О, если вы просто хотите получить название компании, вы можете использовать бета-интерфейс API. Вы получите его, позвонив graph.microsoft.com/beta/users{userid} Вы можете увидеть ответ в моем ответе.
@Tony, за предложение использовать бета-версию, но это то, чего я пытался избежать, поскольку многие бета-версии имеют некоторые изменения, и в зависимости от этих изменений мне, возможно, снова придется обновить код. Поэтому я надеялся получить решение в версии 1.0. В любом случае спасибо. Бета в порядке. Вы можете опубликовать это как ответ, и я приму его.
@ForamkumarParekh Спасибо. Я добавил это к ответу. Кроме того, вы можете найти журнал изменений графа здесь docs.microsoft.com/en-us/graph/…
Вам не нужна и не должна использоваться бета-версия для этого. Инструкции см. в ответе ниже.
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 организации. Я хочу знать, какой пользователь относится к какой организации. Так что этот ответ не помогает.
@ForamkumarParekh Если вы используете обозреватель графиков для вызова этого API, вы получите организацию по умолчанию, которая использовалась для создания этого пользователя. Если вы используете логин.микрософтонлайн.com{tenantid}/oauth2/v2.0/token для получения токена доступа, вы получите сведения об организации, касающиеся назначенного вами tenantid.
@ForamkumarParekh Вы будете членом только одной организации и гостем другой организации.
Спасибо, Тони, за разъяснения. Но я считаю, что даже обращение к API организации может предоставить организацию по умолчанию для вошедшего в систему пользователя. Мне нужны эти данные для всех пользователей только с одного входа. Я предполагаю, что есть некоторая неправильная интерпретация вопроса. Позвольте мне сказать вам, что я создаю приложение, в котором пользователь после входа в систему может получить доступ к данным других пользователей. Мне нужны данные организации для пользователей в списке
знания, которыми вы поделились, были полезны, но они не помогли мне получить то, что мне было нужно. Извиняюсь.
Ресурс 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 возвращает только набор по умолчанию, если вы явно не выбрали..
Если вы добавите $whatif=true
к параметрам запроса, вы заметите, что разница между бета-версией и версией 1.0 заключается в том, что версия 1.0 добавляет $select
по умолчанию, а бета-версия — нет.
Под организацией вы имеете в виду административную единицу или пользователей в отдельном арендаторе?