Complemento de SharePoint de ejemplo para leer o actualizar propiedades de perfiles de usuario
El ejemplo UserProfile.Manipulation.CSOM muestra cómo leer y actualizar las propiedades de perfil de usuario para un usuario concreto. En este ejemplo se usa un complemento hospedado por el proveedor para:
- Leer y mostrar todas las propiedades de perfil de usuario de un usuario.
- Actualizar una propiedad de perfil de usuario de un solo valor.
- Actualizar una propiedad multivalor de perfil de usuario.
Use esta solución si quiere:
- Leer o escribir datos en una propiedad de perfil de usuario de un usuario.
- Usar los valores de propiedad de perfil de usuario para personalizar SharePoint.
Nota:
Este código de ejemplo solo funciona en Office 365.
Antes de empezar
Para empezar, descargue el complemento de prueba UserProfile.Manipulation.CSOM desde el proyecto Modelos y prácticas de desarrollo de Office 365 en GitHub.
Nota:
El código de este artículo se proporciona tal cual, sin garantía de ningún tipo, expresa o implícita, incluidas las garantías implícitas de aptitud para un propósito particular, comerciabilidad o ausencia de infracción.
Antes de ejecutar el escenario 1
En la parte superior del sitio de Office 365, elija la imagen de perfil y, después, Acerca de mí.
En la página Acerca de mí, seleccione Editar su perfil.
En Acerca de mí, escriba Trabajo en Contoso.
Elija Guardar todo y cerrar.
Antes de ejecutar el escenario 3
- En la parte superior del sitio, elija la imagen de perfil y, después, Acerca de mí.
- En la página Acerca de mí, seleccione Editar su perfil.
- En Editar detalles, elija Detalles.
- En Aptitudes, escriba C#, JavaScript.
- Elija Guardar todo y cerrar.
Usar el complemento de ejemplo UserProfile.Manipulation.CSOM
Al ejecutar este ejemplo, se inicia un complemento hospedado por el proveedor, como se muestra en la figura siguiente.
Este ejemplo de código incluye tres escenarios.
Escenario | Muestra cómo |
---|---|
1 | Leer todas las propiedades de perfil de usuario para el usuario que ejecuta la aplicación. |
2* | Actualizar una propiedad de perfil de usuario de un solo valor. |
3* | Actualizar una propiedad multivalor de perfil de usuario. |
Nota:
Este escenario solo se admite en Microsoft 365.
Escenario 1: Leer todas las propiedades de perfil de usuario
Cuando elige Ejecutar escenario 1, el complemento lee todas las propiedades de perfil de usuario para el usuario actual y, después, muestra los datos del perfil de usuario en Propiedades de perfil del usuario actual, como se muestra en la siguiente figura.
Al elegir Ejecutar escenario 1 se llama al método btnScenario1_Click en CodeSample1.aspx.cs para realizar las siguientes tareas:
- Usar PeopleManager para recuperar todas las propiedades de perfil de usuario para el usuario actual.
- Iterar sobre PersonProperties.UserProfileProperties para enumerar los valores de las propiedades del perfil de usuario en un cuadro de texto.
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);
}
}
}
Escenario 2: Actualizar una propiedad de perfil de usuario de un solo valor
Escenario 2 muestra cómo actualizar una propiedad de perfil de usuario de un solo valor. Como se muestra en la siguiente figura, el valor actual de la propiedad Acerca de mí del perfil de usuario para el usuario que ejecuta este complemento es Trabajo en Contoso.
Para actualizar el valor de la propiedad Acerca de mí del perfil de usuario, en el cuadro Nuevo valor Acerca de mí, escriba Soy ingeniero de software en Contoso y luego elija Ejecutar escenario 2. El código actualiza el valor de la propiedad Acerca de mí a Soy ingeniero de software en Contoso.
Como se muestra en la siguiente figura, el complemento actualiza el valor actual de Acerca de mí con el nuevo valor de la propiedad Acerca de mí del perfil de usuario.
Al elegir Ejecutar escenario 2 se llama al método btnScenario2_Click en CodeSample2.aspx.cs para realizar las siguientes tareas:
- Usar PeopleManager para obtener todas las propiedades de perfil de usuario del usuario actual.
- Dar formato al texto escrito por el usuario en HTML.
- Actualizar el valor de la propiedad Acerca de mí del perfil de usuario mediante SetSingleValueProfileProperty, que acepta tres parámetros:
- El nombre de la cuenta del usuario cuyo perfil de usuario va a actualizar.
- El nombre de la propiedad del perfil de usuario (Acerca de mí en este escenario).
- El valor de la propiedad en formato HTML (Soy ingeniero de software en Contoso en este escenario).
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();
}
}
Nota:
Si usa propiedades de perfil de usuario personalizadas, configure la propiedad para que los usuarios puedan editarla. La técnica utilizada en este escenario funciona para las propiedades personalizadas de perfil de usuario.
Escenario 3: Actualizar una propiedad multivalor de perfil de usuario.
Escenario 3 muestra cómo actualizar una propiedad multivalor de perfil de usuario. La siguiente ilustración muestra la página de inicio para el Escenario 3. Valor actual de Aptitudes muestra las aptitudes del usuario que ejecuta la aplicación. Las aptitudes se obtienen de la propiedad SPS-Skills del perfil de usuario para el usuario.
Para agregar nuevas aptitudes a la propiedad SPS-Skills del perfil de usuario desde este complemento:
- Escriba HTML5 y, a continuación, elija Añadir aptitud.
- Escriba ASP.NET y, a continuación, elija Agregar aptitud.
- Elija Ejecutar escenario 3.
- Compruebe que Valor actual de Aptitudes muestra la nueva lista de aptitudes del usuario.
- Compruebe que la propiedad SPS-Skills del perfil de usuario para el usuario ahora muestra la nueva lista de aptitudes.
Al elegir Ejecutar escenario 3 se llama al método btnScenario3_Click en CodeSample3.aspx.cs para realizar las siguientes tareas:
- Usar PeopleManager para obtener todas las propiedades de perfil de usuario del usuario actual.
- Leer la lista de aptitudes que se muestra en el cuadro de lista.
- Guardar las nuevas aptitudes en la propiedad SPS-Skills del perfil de usuario mediante SetMultiValuedProfileProperty, que acepta tres parámetros:
- El nombre de la cuenta del usuario cuyo perfil de usuario se está actualizando.
- El nombre de propiedad del perfil de usuario, que es SPS-Skills.
- Los valores de la propiedad como una Lista de objetos de cadena.
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();
}
}