Когда пользователь впервые входит в семейство сайтов SharePoint, ListItem создается в скрытом списке сведений о пользователе. LookupId в поле PersonOrGroup ссылается на ListItem в этом списке. URL-адрес для списка информации о пользователях для SharePoint Online должен быть следующим:
https://{yourTenant}.sharepoint.com/{yourSiteCollection}/_catalogs/users/detail.aspx
Поскольку список информации о пользователях является общим c списком SharePoint, вы можете запросить этот список с помощью Graph. Сначала получите идентификатор списка для Списка информации о пользователе. Простой способ получить идентификатор списка - это просмотреть источник для сайта информации о пользователях через Chrome и выполнить поиск по «listId». Вы должны найти такой результат:
"listId":"{yourListIdIsHere}"
Скопируйте идентификатор. Используя скопированный идентификатор, идентификатор вашего root сайта и LookupId, вы можете получить ListItem в списке информации о пользователе:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{pasteCopiedListId}/item/{lookUpId}?$expand=Fields
ListItem содержит информацию о пользователе, такую как электронная почта , который может использоваться для идентификации пользователя Azure:
https://graph.microsoft.com/v1.0/users/{eMail}
Вопрос: Как я могу получить скрытый список информации о пользователях из Microsoft Graph?
Если Вы не хотите использовать трюк с Google Chrome, чтобы получить идентификатор, есть другой способ получить сайт. Как правило, если вы хотите получить идентификатор для любого сайта, вы должны позвонить:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists
Однако вы не найдете идентификатор в Списке информации о пользователях, даже если вы включите скрытые сайты. Я не знаю, почему. Дополнительная проблема, по-видимому, заключается в том, что вы не можете фильтровать списки по их имени:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists?$filter=name eq 'users'
Запрос возвращает ошибку, что предоставленный оператор фильтра не поддерживается. Единственный способ получить список без знания идентификатора - использовать свойство displayName списка. Однако displayName зависит от вашей локализации. Итак, поскольку я из Германии, я могу получить сайт, используя запрос:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists?$filter=displayName eq 'Benutzerinformationsliste'
Вам нужно будет заменить Benutzerinformationsliste на ваше локализованное имя. Это возвращает ожидаемый результат:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('xxx')/lists(id,name,displayName)",
"value": [
{
"@odata.etag": "\"xxx\"",
"id": "xxx",
"name": "users",
"displayName": "Benutzerinformationsliste"
}
]
}
Как видите, имя списка - «пользователи», поэтому, почему первый оператор фильтра не работает, для меня немного загадка. Может быть, кто-то здесь знает и может помочь.