SharePoint Online. Getting User Picture URL

I've posted about document thumbnail in SharePoint Online. And today I'll show you how you can get picture of a user.

Samples in this post work not only SharePoint Online but SharePoint on-premise (at least SharePoint 2019 and SharePoint 2016).

As for document thumbnail there is the base URL for user pictures in SharePoint:


/_layouts/15/userphoto.aspx

User Identity

To identify the user there are two query string parameters:

  • UserName
  • AccountName

User picture is stored in user profile. So SharePoint need to reach the profile. If AccountName parameter is presented in the response, SharePoint will try to find out the profile using that value (it may be primary account name or email).

If you provide UserName parameter, SharePoint will try to resolve this identity and reach associated user profile.

Therefore SharePoint always gets user image according to AccountName parameter.

Getting image by UserName:


/_layouts/15/userphoto.aspx?UserName=login@tenant.onmicrosoft.com

The more effective approach (if you know primary e-mail or account name of the user):


/_layouts/15/userphoto.aspx?AccountName=mail@domain.com

Size

There are three possible sizes of user picture in SharePoint:

  • L - 240x240
  • M - 72x72
  • S - 48x48 (default value)

For size you need to use Size parameter.


Getting user image sized 240x240px by AccountName:


/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&Size=L

Cache

By default SharePoint caches picture for one day. Using Cache and t you can manage this behavior.

Cache parameter can be any value and t one - number of seconds.

Getting user picture with caching for 5 minutes (300 seconds):


/_layouts/15/userphoto.aspx?AccountName=mail@domain.com&Cache=1&t=300

To manage cache settings use DisableEnhancedBrowserCachingForUserPhotos property for your web application. The following PowerShell script turn on cache options for user profile image:


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




Share

Comments