Partager via


Procédure : Récupérer les propriétés de profil utilisateur à l’aide du modèle objet client .NET dans SharePoint

Découvrez comment récupérer des propriétés de profil utilisateur par programme à l'aide du modèle objet client .NET SharePoint.

À quoi correspondent les propriétés de profil utilisateur dans SharePoint ?

Les propriétés utilisateur et les propriétés de profil utilisateur fournissent des informations sur les utilisateurs SharePoint, telles que le nom d'affichage, l'adresse de messagerie, la fonction et d'autres informations professionnelles et personnelles. Dans les API côté client, vous accédez à ces propriétés à partir de l’objet PersonProperties et de sa propriété UserProfileProperties . La propriété UserProfileProperties contient toutes les propriétés de profil utilisateur, mais l'objet PersonProperties contient les propriétés fréquemment utilisées (telles que AccountName , DisplayName et Email ) plus faciles d'accès.

L’objet PeopleManager inclut les méthodes suivantes que vous pouvez utiliser pour récupérer les propriétés utilisateur et les propriétés de profil utilisateur à l’aide du modèle objet client .NET :

Les propriétés de profil utilisateur des API clientes sont en lecture seule (à l’exception de l’image de profil, que vous pouvez modifier à l’aide de la méthode PeopleManager.SetMyProfilePicture ). Si vous souhaitez modifier d'autres propriétés de profil utilisateur, vous devez utiliser le modèle objet serveur.

Remarque

La version cliente de l’objet UserProfile ne contient pas toutes les propriétés utilisateur comme version côté serveur. Cependant, la version côté client fournit des méthodes qui permettent à l’utilisateur actuel de créer un site personnel. Pour récupérer l’objet UserProfile de l’utilisateur actuel, utilisez la méthode ProfileLoader.GetUserProfile.

Pour plus d’informations sur l’utilisation des profils, voir Utiliser des profils utilisateur dans SharePoint.

Conditions préalables à la configuration de votre environnement de développement pour récupérer les propriétés de profil utilisateur à l'aide du modèle objet client .NET SharePoint

Pour créer une application console qui utilise le modèle objet client .NET afin de récupérer les propriétés de profil utilisateur, vous aurez besoin des éléments suivants :

  • SharePoint avec des profils créés pour l’utilisateur actuel et un utilisateur cible

  • Visual Studio 2012

  • Autorisations de connexion Contrôle total pour accéder à l’application de service de profil utilisateur pour l’utilisateur actuel

Remarque

Si vous ne développez pas sur l’ordinateur qui exécute SharePoint, téléchargez les composants clients SharePoint qui contiennent des assemblys clients SharePoint.

Créez l’application console qui récupère les propriétés de profil utilisateur à l’aide du modèle objet client .NET SharePoint.

  1. Sur l'ordinateur de développement, ouvrez Visual Studio et sélectionnez Fichier, Nouveau, puis Projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez .NET Framework 4.5 dans la liste déroulante située en haut.

  3. Dans les modèles de projet, sélectionnez Windows, puis Application console.

  4. Nommez le projet UserProfilesCSOM, puis cliquez sur le bouton OK.

  5. Ajoutez des références aux assemblies suivants :

  • Microsoft.SharePoint.Client
  • Microsoft.SharePoint.ClientRuntime
  • Microsoft.SharePoint.Client.UserProfiles
  1. Dans la méthode Main, définissez des variables pour l’URL du serveur et le nom d’utilisateur cible, comme illustré dans le code suivant.
const string serverUrl = "http://serverName/";
const string targetUser = "domainName\\userName";

Remarque : N’oubliez pas de remplacer les valeurs d’espace http://serverName/ réservé et domainName\\\\userName avant d’exécuter le code.

  1. Initialisez le contexte client SharePoint, comme illustré dans le code suivant.
ClientContext clientContext = new ClientContext(serverUrl);
  1. Obtenez les propriétés de l'utilisateur cible à partir de l'objet PeopleManager, comme indiqué dans le code suivant.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetPropertiesFor(targetUser);

L'objet personProperties est un objet client. Certains objets clients ne contiennent aucune donnée avant leur initialisation. Par exemple, vous ne pouvez pas accéder aux valeurs de propriété de l'objet personProperties avant de l'initialiser. Si vous tentez d'accéder à une propriété avant qu'elle ne soit initialisée, vous recevez une exception PropertyOrFieldNotInitializedException.

  1. Pour initialiser l'objet personProperties, enregistrez la requête que vous souhaitez exécuter, puis exécutez-la sur le serveur, comme indiqué dans le code suivant.
clientContext.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
clientContext.ExecuteQuery();

Lorsque vous appelez la méthode Load (ou la méthode LoadQuery), vous transmettez l'objet que vous voulez récupérer ou modifier. Dans cet exemple, l'appel de la méthode Load transmet des paramètres facultatifs pour filtrer la demande. Les paramètres sont des expressions lambda qui demandent uniquement les propriétés AccountName et UserProfileProperties de l'objet personProperties.

Conseil : pour réduire le trafic réseau, demandez uniquement les propriétés que vous voulez utiliser lorsque vous appelez la méthode Load. En outre, si vous utilisez plusieurs objets, groupez dans la mesure du possible vos appels à la méthode Load avant d’appeler la méthode ExecuteQuery.

  1. Itérez au sein des propriétés du profil utilisateur et lisez le nom et la valeur de chaque propriété, comme illustré dans le code suivant.
foreach (var property in personProperties.UserProfileProperties)
{
    Console.WriteLine(string.Format("{0}: {1}", 
        property.Key.ToString(), property.Value.ToString()));
}

Exemple de code : récupération de toutes les propriétés de profil utilisateur à l'aide du modèle objet client .NET SharePoint

L’exemple de code suivant montre comment récupérer et itérer toutes les propriétés de profil utilisateur d’un utilisateur cible, comme décrit dans la procédure précédente.

Remarque

Remplacez les valeurs d’espace http://serverName/ réservé et domainName\\\\userName avant d’exécuter le code.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;

namespace UserProfilesCSOM
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target SharePoint site and
            // target user.
            const string serverUrl = "http://serverName/";  
            const string targetUser = "domainName\\\\userName";  

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the PeopleManager object and then get the target user's properties.
            PeopleManager peopleManager = new PeopleManager(clientContext);
            PersonProperties personProperties = peopleManager.GetPropertiesFor(targetUser);

            // Load the request and run it on the server.
            // This example requests only the AccountName and UserProfileProperties
            // properties of the personProperties object.
            clientContext.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
            clientContext.ExecuteQuery();

            foreach (var property in personProperties.UserProfileProperties)
            {
                Console.WriteLine(string.Format("{0}: {1}", 
                    property.Key.ToString(), property.Value.ToString()));
            }
            Console.ReadKey(false);

            // TODO: Add error handling and input validation.
        }
    }
}

Exemple de code : récupération des propriétés de profil utilisateur des personnes qui me suivent à l’aide du modèle objet client .NET SharePoint

L'exemple de code suivant montre comment obtenir, dans une Complément SharePoint, les propriétés de profil utilisateur des personnes qui vous suivent.


string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

if (contextTokenString != null)
{
    Uri sharepointUrl = new Uri(Request.QueryString["SP.Url"]);

    ClientContext clientContext = TokenHelper.GetClientContextWithContextToken(sharepointUrl.ToString(), contextTokenString, Request.Url.Authority);

    PeopleManager peopleManager = new PeopleManager(clientContext);
    ClientObjectList<PersonProperties> peopleFollowedBy = peopleManager.GetMyFollowers();
    clientContext.Load(peopleFollowedBy, people => people.Include(person => person.PictureUrl, person => person.DisplayName));
    clientContext.ExecuteQuery();

    foreach (PersonProperties personFollowedBy in peopleFollowedBy)
    {
        if (!string.IsNullOrEmpty(personFollowedBy.PictureUrl))
        {
        Response.Write("<img src=\\"" + personFollowedBy.PictureUrl + "\\" alt=\\"" + personFollowedBy.DisplayName + "\\"/>");
        }
    }
    clientContext.Dispose();
}

Exemple de code : récupération d'un jeu de propriétés de profil utilisateur à l'aide du modèle objet client .NET SharePoint

L’exemple de code suivant montre comment récupérer un ensemble spécifique de propriétés de profil utilisateur pour un utilisateur cible.

Remarque

Pour récupérer la valeur d’une seule propriété de profil utilisateur, utilisez la méthode GetUserProfilePropertyFor .

Contrairement à l’exemple de code précédent qui récupère un objet PersonProperties pour l’utilisateur cible, cet exemple appelle la méthode PeopleManager.GetUserProfilePropertiesFor et transmet un objet UserProfilePropertiesForUser qui spécifie l’utilisateur cible et les propriétés de profil utilisateur à récupérer. GetUserProfilePropertiesFor retourne une collection de chaînes> IEnumerable< qui contient les valeurs des propriétés que vous spécifiez.

Remarque

Remplacez les valeurs d’espace http://serverName/ réservé et domainName\\\\userName avant d’exécuter le code.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;

namespace UserProfilesCSOM
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target SharePoint site and the
            // target user.
            const string serverUrl = "http://serverName/";  
            const string targetUser = "domainName\\\\userName";  

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the PeopleManager object.
            PeopleManager peopleManager = new PeopleManager(clientContext);

            // Retrieve specific properties by using the GetUserProfilePropertiesFor method. 
            // The returned collection contains only property values.
            string[] profilePropertyNames = new string[] { "PreferredName", "Department", "Title" };
            UserProfilePropertiesForUser profilePropertiesForUser = new UserProfilePropertiesForUser(
                clientContext, targetUser, profilePropertyNames);
            IEnumerable<string> profilePropertyValues = peopleManager.GetUserProfilePropertiesFor(profilePropertiesForUser);

            // Load the request and run it on the server.
            clientContext.Load(profilePropertiesForUser);
            clientContext.ExecuteQuery();

            // Iterate through the property values.
            foreach (var value in profilePropertyValues)
            {
                Console.Write(value + "\\n");
            }
            Console.ReadKey(false);

            // TO DO: Add error handling and input validation.
        }
    }
}

Voir aussi