Compartir a través de


Obtener las propiedades y la identidad de usuario en SharePoint

Existen distintas formas de recuperar la identidad e información del usuario, en función de la información que desee recuperar. En este artículo se muestran algunos métodos para hacerlo.

Requisitos previos para recuperar las propiedades y la identidad de usuario

Conceptos básicos que debe conocer para recuperar las propiedades y la identidad de usuario

En la tabla siguiente se muestran algunos artículos útiles que le permitirán comprender los conceptos propios de la creación de complementos de SharePoint.

Artículo Descripción
Permisos de complementos en SharePoint Obtenga información sobre los permisos de complemento de SharePoint para trabajar con SharePoint, lo cual incluye los tipos de permisos de complemento, el ámbito de la solicitud del permiso y la administración de permisos. En este artículo también se describen las diferencias en los derechos de permisos de complemento y los derechos de usuario.
Flujo de OAuth de token de contexto para Complementos de SharePoint Obtenga información sobre la autenticación OAuth y el flujo de autorización para complementos hospedados en la nube.
Introducción a la creación de complementos de SharePoint hospedados por el proveedor Aprenda a crear un complemento básico de SharePoint hospedado por el proveedor con Office Developer Tools para Visual Studio, a interactuar con sitios de Microsoft SharePoint mediante el CSOM de SharePoint y a implementar OAuth en un complemento de SharePoint.

Recuperar la identidad del usuario actual del sitio web mediante el objeto Web

La forma más sencilla de recuperar la identidad del usuario actual de un sitio web es a través del objeto Web. Con el archivo TokenHelper.cs en el proyecto, puede obtener la identidad de usuario del sitio web actual mediante el siguiente fragmento de código.

    ClientContext clientContext =
                TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken);
    
                //Load the properties for the Web object.
                Web web = clientContext.Web;
                clientContext.Load(web);
                clientContext.ExecuteQuery();
    
                //Get the site name.
                siteName = web.Title;
    
                //Get the current user.
                clientContext.Load(web.CurrentUser);
                clientContext.ExecuteQuery();
                currentUser = clientContext.Web.CurrentUser.LoginName;

Si usa Office 365, el nombre de inicio de sesión que obtendrá será similar a i:0#.f|membership|adam@contoso.com.

Si usa un entorno local de Microsoft SharePoint y el usuario inicia sesión como usuario normal mediante NTLM, el nombre de inicio de sesión que obtendrá será similar a i:0#.w|contoso\adam.

Si usa SharePoint local y el usuario ha iniciado sesión con una cuenta de granja de servidores, el nombre de inicio de sesión que obtiene es SHAREPOINT\System.

Recuperar una identidad de usuario con el método ResolvePrincipal

La siguiente es otra manera de recuperar el nombre de inicio de sesión de un usuario. Si tiene la dirección de correo electrónico del usuario o el nombre para mostrar, puede usar el método ResolvePrincipal para obtener el nombre de inicio de sesión del usuario.

Nota:

Las API se encuentran el espacio de nombres Microsoft.SharePoint.Client.Utilities del ensamblado Microsoft.SharePoint.Client.Utilities.

Este es un código de ejemplo para mostrar cómo obtener la información de inicio de sesión del usuario.

    ClientResult<Microsoft.SharePoint.Client.Utilities.PrincipalInfo> persons = Microsoft.SharePoint.Client.Utilities.Utility.ResolvePrincipal(clientContext, clientContext.Web, <email>, Microsoft.SharePoint.Client.Utilities.PrincipalType.User, Microsoft.SharePoint.Client.Utilities.PrincipalSource.All, null, true);
                clientContext.ExecuteQuery();
                Microsoft.SharePoint.Client.Utilities.PrincipalInfo person = persons.Value;

El valor Person.LoginName proporciona la información de inicio de sesión.

Recuperar la identidad y las propiedades del perfil de usuario con el token de OAuth y las API de características sociales

Si desea recuperar la identidad y propiedades del usuario, puede usar el token de OAuth y las API de características sociales. En primer lugar, obtenga el token de OAuth y, a continuación, establézcalo en el contexto de cliente.

Este código de ejemplo muestra cómo obtener las propiedades del perfil de usuario.


    ClientContext clientContext = new ClientContext(<sharepointurl>);
    clientContext.AuthenticationMode = ClientAuthenticationMode.Anonymous;
    clientContext.FormDigestHandlingEnabled = false;
    clientContext.ExecutingWebRequest +=
    delegate(object oSender, WebRequestEventArgs webRequestEventArgs)
    {                      
        webRequestEventArgs.WebRequestExecutor.RequestHeaders["Authorization"] =
            "Bearer " + accessToken;
    };

Después, use la API UserProfilesPeopleManager para obtener las propiedades del usuario que usa el complemento.

    PeopleManager peopleManager = new PeopleManager(clientContext);
    PersonProperties personDetails = peopleManager.GetMyProperties();
    clientContext.Load(personDetails, personsD => personsD.AccountName, personsD => personsD.Email,  personsD => personsD.DisplayName);
                    clientContext.ExecuteQuery();

Para que el código funcione:

  • El servicio compartido de perfil del usuario se debe configurar y sincronizar en SharePoint para los usuarios.

  • Es preciso que agregue el siguiente ámbito de permisos para las características sociales en el manifiesto del complemento:

        <AppPermissionRequest Right="Read" Scope="http://sharepoint/social/tenant" />
    
  • Las API están en Microsoft.SharePoint.Client.UserProfiles.dll.

Este es otro ejemplo de fragmento de código que muestra cómo obtener acceso al almacén de perfiles de usuario.

    ClientContext clientContext; //Create this like you normally would.               
    PeopleManager peopleManager = new PeopleManager(clientContext);
    PersonProperties myProperties = peopleManager.GetMyProperties();
    clientContext.Load(myProperties);
    clientContext.ExecuteQuery();

Ver también