How to Get the Current User's Properties Using CSOM in SharePoint 2013

In this article we will see how to programmatically get the current user's properties using CSOM in SharePoint 2013.

Introduction

In SharePoint 2010 using the client-side object model we are unable to retrieve the user profile properties whereas in SharePoint 2013 they have added a new assembly for the user profile service. Using "Microsoft.SharePoint.Client.UserProfiles.dll" located in hive 15 of the ISAPI folder we are able to retrieve the user profile properties using CSOM.

(Client-Side Object Model). In this article we will see how to programmatically get the current user's properties using CSOM in SharePoint 2013.

Prerequisites

The following are the prerequisites:

  1. SharePoint 2013.
  2. Visual Studio 2012.
  3. User Profile Service application provisioned.
  4. User profiles should be created.

Create a console application in Visual Studio 2012 using the following:

  1. Open Visual Studio 2012 (Run as administrator).
  2. Go to File=> New => Project.
  3. Select Console Application in the Visual C# node from the installed templates.

    Share1.jpg
     
  4. Enter the Name and click on Ok.
  5. In the Solution Explorer, right-click on the References folder and then click on Add Reference.
  6. Add the following assemblies from hive 15 (C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI).
    a. Microsoft.SharePoint.Client.dll
    b. Microsoft.SharePoint.Client.Runtime.dll
    c. Microsoft.SharePoint.Client.UserProfiles.dll
  7. Open Program.cs file and replace the code with the following:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;
 
namespace UserProfileService
{
   
class Program
    {
       
static void Main(string[] args)
        {
           
//// String Variable to store the siteURL
            string siteURL = "http://c4968397007:3695/";           
 
           
//// To get the context of the SharePoint site to access the data
            ClientContext clientContext = new ClientContext(siteURL);
 
           
//// PeopleManager class provides the methods for operations related to people
            PeopleManager peopleManager = new PeopleManager(clientContext);
 
           
//// PersonProperties class is used to represent the user properties
            //// GetMyProperties method is used to get the current user's properties
            PersonProperties personProperties = peopleManager.GetMyProperties();
            clientContext.Load(personProperties, p => p.AccountName, p => p.Email, p => p.DisplayName);
            clientContext.ExecuteQuery(); 
           
//// Display the user  properties - AccountName, Email,  DisplayName
            Console.WriteLine("Account Name: " + personProperties.AccountName);
            Console.WriteLine(
"Email: " + personProperties.Email);
            Console.WriteLine(
"Display Name: " + personProperties.DisplayName);
            Console.ReadLine();
        }
    }
}


Note

In the code snippet the ExecuteQuery() method is used to send the request to the server until the ExecuteQuery() method is called; only the requests are registered by the application. The Load() method does not actually load anything; when the ExecuteQuery() method is called, it only specifies that these are the property values to be loaded for the object. In the Load() method lamda expressions are used to specify which property should be loaded instead of loading all the properties.

Run the console application

Hit F5. The output will be displayed as in the following:

Share2.jpg

Since the Console Application is running using administrator account (current user) it will get the user properties of the administrator.

Summary

Thus in this article we have seen how to programmatically get the current user's properties using CSOM in SharePoint 2013.