Compartilhar via


Obter a identidade e propriedades do usuário no SharePoint

Há diferentes maneiras de recuperar a identidade e as informações do usuário, depende de quais informações você deseja recuperar. Este artigo mostra algumas maneiras de fazer isso.

Pré-requisitos para recuperar as propriedades e a identidade do usuário

Principais conceitos para recuperar as propriedades e a identidade do usuário

A tabela a seguir contém alguns artigos úteis que podem ajudá-lo a entender os conceitos envolvidos na criação de Suplementos do SharePoint.

Artigo Descrição
Permissões de suplementos no SharePoint Saiba mais sobre as permissões de suplementos para trabalhar com o SharePoint, incluindo tipos de permissões de suplemento, escopos de solicitação de permissão e gerenciamento de permissões. Este artigo também aborda as diferenças entre direitos de permissão de suplemento e direitos de usuário.
Fluxo de token OAuth de contexto para Suplementos do SharePoint Saiba mais sobre o fluxo de autenticação e autorização OAuth para suplementos hospedados na nuvem.
Introdução à criação de Suplementos do SharePoint hospedados pelo provedor Saiba como criar um suplemento do SharePoint hospedado em um provedor básico com o Office Developer Tools para Visual Studio 2012, como interagir com sites do Microsoft SharePoint usando o CSOM do SharePoint e como implementar OAuth em um suplemento do SharePoint.

Recuperar a identidade de usuário do site atual usando o objeto Web

A maneira mais fácil de recuperar a identidade do usuário atual do site é por meio do objeto Web. Com o arquivo TokenHelper.cs em seu projeto, você pode obter a identidade do usuário do site atual usando o trecho de código a seguir.

    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;

Se você estiver usando o Office 365, o nome de login obtido será semelhante a i:0#.f|membership|adam@contoso.com.

Se você estiver usando o Microsoft SharePoint local, e o usuário estiver conectado como um usuário normal com NTLM, o nome de login obtido será semelhante a i:0#.w|contoso\adam.

Se você estiver usando o SharePoint local e o usuário estiver conectado usando uma conta de farm, o nome de entrada que você obtém será SHAREPOINT\System.

Recuperar a identidade do usuário com o método ResolvePrincipal

Confira a seguir outra maneira de recuperar o nome de login do usuário. Se você tiver o endereço de email ou o nome de exibição do usuário, poderá usar o método ResolvePrincipal para obter o nome de login do usuário.

Observação

As APIs estão no namespace Microsoft.SharePoint.Client.Utilities no assembly Microsoft.SharePoint.Client.dll.

Veja a seguir um exemplo de código que mostra como obter as informações de login do usuário.

    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;

O valor Person.LoginName fornece as informações de login.

Recuperar propriedades de identidade e perfil do usuário usando o token OAuth e as APIs de recursos sociais

Se você quiser recuperar a identidade e as propriedades do usuário, poderá usar o token OAuth e as APIs de recursos sociais. Primeiro, obtenha o token OAuth e defina-o como o contexto do cliente.

O exemplo de código a seguir mostra como obter as propriedades de perfil de usuário.


    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;
    };

Em seguida, use a API UserProfilesPeopleManager para obter as propriedades do usuário que está usando o suplemento.

    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 o código funcione:

  • O serviço compartilhado de perfis de usuário deve estar configurado e sincronizado no SharePoint para os usuários.

  • Você deve adicionar o seguinte escopo de permissão para recursos sociais no manifesto do suplemento:

        <AppPermissionRequest Right="Read" Scope="http://sharepoint/social/tenant" />
    
  • As APIs estão em Microsoft.SharePoint.Client.UserProfiles.dll.

Veja a seguir outro exemplo de trecho de código que mostra como acessar o repositório de perfis de usuário.

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

Confira também