Complément SharePoint - Exemple de lecture ou de mise à jour des propriétés de profil utilisateur
L’exemple UserProfile.Manipulation.CSOM vous montre comment lire et mettre à jour les propriétés du profil utilisateur pour un utilisateur particulier. Cet exemple utilise un complément auto-hébergé en complément hébergé par un fournisseur pour effectuer les actions suivantes :
- Lire et afficher toutes les propriétés du profil utilisateur d’un utilisateur.
- Mettre à jour une propriété de profil utilisateur à valeur unique.
- Mettre à jour une propriété de profil utilisateur à plusieurs valeurs.
Utilisez cette solution si vous souhaitez :
- Lire ou écrire des données dans une propriété de profil utilisateur pour un utilisateur.
- Utiliser les valeurs des propriétés du profil utilisateur pour personnaliser SharePoint.
Remarque
Cet exemple de code ne fonctionne qu’avec Office 365.
Avant de commencer
Pour commencer, téléchargez le complément exemple UserProfile.Manipulation.CSOM à partir du projet Pratiques et modèles Office 365 Developer sur GitHub.
Remarque
Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.
Avant d’exécuter le scénario 1
Dans le haut de votre site Office 365, choisissez votre photo de profil, puis cliquez sur À mon sujet.
Sur la page À mon sujet, choisissez Modifier votre profil.
Dans À mon sujet, entrez Je travaille chez Contoso.
Cliquez sur Enregistrer tout et fermer.
Avant d’exécuter le scénario 3
- Dans le haut de votre site, choisissez votre photo de profil, puis cliquez sur À mon sujet.
- Sur la page À mon sujet, choisissez Modifier votre profil.
- Dans Modifier les détails, choisissez Détails.
- Dans Compétences, entrez C#, JavaScript.
- Cliquez sur Enregistrer tout et fermer.
Utilisation du complément exemple UserProfile.Manipulation.CSOM
L’exécution de cet exemple démarre un complément hébergé par le fournisseur, comme le montre la figure suivante.
Cet exemple de code comprend trois scénarios.
Scénario | Montre comment |
---|---|
1 | Lire toutes les propriétés du profil utilisateur de l’utilisateur exécutant l’application. |
2* | Mettre à jour une propriété de profil utilisateur à valeur unique. |
3* | Mettre à jour une propriété de profil utilisateur à plusieurs valeurs. |
Remarque
Ce scénario est uniquement pris en charge dans Microsoft 365.
Scénario 1 : lire toutes les propriétés du profil utilisateur
Lorsque vous choisissez Exécuter le scénario 1, le complément lit toutes les propriétés du profil utilisateur de l'utilisateur actuel, puis affiche les données du profil utilisateur dans Current user profile properties (Propriétés du profil de l’utilisateur actuel), comme indiqué dans la figure suivante.
L’option Exécuter le scénario 1 appelle la méthode btnScenario1_Click de CodeSample1.aspx.cs pour effectuer les tâches suivantes :
- Utiliser PeopleManager pour récupérer toutes les propriétés du profil utilisateur de l’utilisateur actuel.
- Effectuer des itérations sur PersonProperties.UserProfileProperties pour dresser la liste des valeurs des propriétés du profil utilisateur dans une zone de texte.
protected void btnScenario1_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and load current properties.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties);
clientContext.ExecuteQuery();
// Output user profile properties to a text box.
txtProperties.Text = "";
foreach (var item in personProperties.UserProfileProperties)
{
txtProperties.Text += string.Format("{0} - {1}{2}", item.Key, item.Value, Environment.NewLine);
}
}
}
Scénario 2 : mettre à jour une propriété de profil utilisateur à valeur unique
Le scénario 2 montre comment mettre à jour une propriété de profil d’utilisateur à valeur unique. Comme le montre la figure suivante, la valeur actuelle de la propriété À mon sujet est Je travaille chez Contoso pour le profil utilisateur de l’utilisateur exécutant ce complément.
Pour mettre à jour la valeur de la propriété À mon sujet du profil utilisateur, dans la zone Nouvelle valeur À mon sujet , entrez Je suis ingénieur logiciel chez Contoso, puis choisissez Exécuter le scénario 2. La propriété À mon sujet comporte alors Je suis ingénieur logiciel chez Contoso dans le code source.
Comme le montre la figure suivante, le complément met à jour la valeur actuelle de À mon sujet avec la nouvelle valeur de la propriété À mon sujet du profil utilisateur.
L’option Exécuter le scénario 2 appelle la méthode btnScenario2_Click de CodeSample2.aspx.cs pour faire ce qui suit :
- Utilisez PeopleManager pour obtenir les propriétés du profil utilisateur de l’utilisateur actuel.
- Mettre en forme au format HTML le texte entré par l’utilisateur.
- Mettez à jour la valeur de la propriété AboutMe du profil utilisateur en utilisant SetSingleValueProfileProperty, qui accepte trois paramètres :
- Le nom de compte de l'utilisateur dont vous mettez à jour le profil utilisateur.
- Le nom de propriété du profil utilisateur (AboutMe dans ce scénario).
- La valeur de la propriété au format HTML (Je suis ingénieur logiciel chez Contoso dans ce scénario).
protected void btnScenario2_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and initialize the account name.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties, p => p.AccountName);
clientContext.ExecuteQuery();
// Convert entry to HTML.
string updatedValue = (txtAboutMe.Text).Replace(Environment.NewLine, "");
// Update the AboutMe property for the user using account name from the user profile.
peopleManager.SetSingleValueProfileProperty(personProperties.AccountName, "AboutMe", updatedValue);
clientContext.ExecuteQuery();
}
}
Remarque
Si vous employez des propriétés de profil utilisateur personnalisées, configurez les propriétés modifiables par les utilisateurs. La technique utilisée dans ce scénario fonctionne pour les propriétés du profil utilisateur personnalisé.
Scénario 3 : mettre à jour une propriété de profil utilisateur à plusieurs valeurs
Le scénario 3 montre comment mettre à jour une propriété de profil d’utilisateur à plusieurs valeurs. La figure suivante représente la page de démarrage du scénario 3. La valeur actuelle des compétences indique les compétences de l’utilisateur qui exécute l’application. Les compétences sont lues dans la propriété SPS-Skills du profil utilisateur de l’utilisateur.
Pour ajouter des nouvelles compétences à la propriété SPS-Skills du profil utilisateur de l’utilisateur à partir de ce complément :
- Entrez HTML5, puis choisissez Ajouter une compétence.
- Entrez ASP.NET, puis choisissez Ajouter une compétence.
- Sélectionnez Exécuter le scénario 3.
- Vérifiez que la valeur actuelle des compétences comporte la nouvelle liste de compétences de l’utilisateur.
- Vérifiez que la propriété SPS-Skills du profil utilisateur de l’utilisateur affiche désormais la nouvelle liste de compétences.
L’option Exécuter le scénario 3 appelle la méthode btnScenario3_Click de CodeSample3.aspx.cs pour faire ce qui suit :
- Utilisez PeopleManager pour obtenir les propriétés du profil utilisateur de l’utilisateur actuel.
- Lire la liste des compétences dans la zone de liste.
- Enregistrer les nouvelles compétences dans la propriété SPS-Skills du profil utilisateur en utilisant SetMultiValuedProfileProperty, qui accepte trois paramètres :
- Le nom de compte de l’utilisateur dont le profil utilisateur est mis à jour.
- Le nom de propriété du profil utilisateur, qui est SPS-Skills.
- Valeurs de propriété en tant que List d’objets String.
protected void btnScenario3_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and initialize the account name.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties, p => p.AccountName);
clientContext.ExecuteQuery();
// Collect the user's skills from the list box in order to update the user's profile.
List<string> skills = new List<string>();
for (int i = 0; i < lstSkills.Items.Count; i++)
{
skills.Add(lstSkills.Items[i].Value);
}
// Update the SPS-Skills property for the user using account name from the user's profile.
peopleManager.SetMultiValuedProfileProperty(personProperties.AccountName, "SPS-Skills", skills);
clientContext.ExecuteQuery();
// Refresh the values.
RefreshUIValues();
}
}