Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Prepare o ambiente de desenvolvimento do suplemento conforme descrito em Configurar um ambiente de desenvolvimento local para Suplementos do SharePoint.
Se você ainda não tiver instalado o Visual Studio 2013 ou posterior, instale-o seguindo as instruções em Instalar o Visual Studio. Recomendamos o uso da versão mais recente do Centro de Download da Microsoft.
O Visual Studio inclui o Microsoft Office Developer Tools para Visual Studio, mas, às vezes, uma versão das ferramentas é lançada entre as atualizações do Visual Studio. Para garantir que você tenha a versão mais recente das ferramentas, execute o instalador do Office Developer Tools para Visual Studio 2013 ou o instalador do Office Developer Tools para Visual Studio 2015.
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();