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 на стороне сервера.

Получение изображение пользователя, используя параметр 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

Для управления параметрами кэширования используйте свойство DisableEnhancedBrowserCachingForUserPhotos веб-приложения. Следующий PowerShell скрипт включает возможность управлять кэшированием:


$webApp = Get-SPWebApplication https://sharepointportal
$webApp.Properties.Add("DisableEnhancedBrowserCachingForUserPhotos", "true")
$webApp.Update()




Поделиться

Коментарии