SharePoint Online. Получение изображения пользователя
В предыдущем посте я писал о том как получить превью документа в виде картинки. В этом посте я покажу как получить изображение пользователя с помощью стандартного хендлера, который доступен как в SharePoint On-Premise, так и в SharePoint Online.
Примеры в этом посте работает не только в SharePoint Online, но также и в SharePoint On-Premise (как минимум в SharePoint 2019 и в SharePoint 2016).
Также как и для документов в SharePoint существует хендлер для получения изображения пользователя:
/_layouts/15/userphoto.aspx
Идентификация пользователя
Для получение изображения необходимо идентифицировать пользователя. Для этого существуют два параметра, передаваемых в строке запроса:
- UserName
- AccountName
Изображение хранится в профиле пользователя. Т.е. SharePoint необходимо сначала получить профиль. Если параметр AccountName передан в запросе, то SharePoint пробует найти профиль, используя переданное значение (это может быть основной аккаунт или адрес электронной почты).
Если вы передаете параметр UserName, то SharePoint сначала пробует получить пользователя по указанному логину, а затем уже выгрузить профиль этого пользователя.
SharePoint всегда получает изображение пользователя, используя параметр AccountName. Если передан параметр UserName, то он будет использован только для получения параметра AccountName на стороне сервера.
Указывайте параметр AccountName вместо UserName, если это возможно, для избежания выполнения лишних операций на стороне сервера.
Получение изображение пользователя, используя параметр UserName:
/_layouts/15/userphoto.aspx?UserName=login@tenant.onmicrosoft.com
Наиболее эффективный способ (если известен основной аккаунт или адрес электронной почты):
/_layouts/15/userphoto.aspx?AccountName=mail@domain.com
Размер
Возможно три размера изображения пользователя в SharePoint:
- L - 240x240
- M - 72x72
- S - 48x48 (по умолчанию)
Для указания размера необходимо использовать параметр Size.
Получение изображения пользователя размером 240x240 по имени аккаунта или почте (AccountName):
/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&Size=L
Кэширование
По умолчанию SharePoint кэширует изображение на один день. Используя параметры Cache и t, можно управлять использованием кэша.
Параметр Cache может принимать любое значение, а параметр t должен быть представлен числом (кол-во секунд).
Получение изображения с кэшированием на 5 минут (300 секунд):
/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&**Cache=1&t=300**
Управление кэшированием доступно только в SharePoint on-premise. SharePoint Online всегда кэширует изображения профиля на 24 часа.
Для управления параметрами кэширования используйте свойство DisableEnhancedBrowserCachingForUserPhotos веб-приложения. Следующий PowerShell скрипт включает возможность управлять кэшированием:
$webApp = Get-SPWebApplication https://sharepointportal
$webApp.Properties.Add("DisableEnhancedBrowserCachingForUserPhotos", "true")
$webApp.Update()