Partilhar via


Recuperar propriedades de perfil de usuário usando o modelo de objeto do cliente .NET no SharePoint

Saiba como recuperar as propriedades de perfil de usuário programaticamente usando o modelo de objeto do cliente SharePoint .NET.

Quais são as propriedades de perfil de usuário no SharePoint?

Propriedades de usuário e propriedades de perfil de usuário fornecem informações sobre os usuários do SharePoint, como o nome para exibição, email, cargo e comerciais e informações pessoais. Em APIs do lado do cliente, você acessa essas propriedades do objeto PersonProperties e sua propriedade UserProfileProperties . A propriedade UserProfileProperties contém todas as propriedades de perfil de usuário, mas o objeto de PersonProperties contém propriedades comumente usadas (por exemplo, AccountName , DisplayName e Email ) que são mais fáceis de acesso.

O objeto PeopleManager inclui os seguintes métodos que você pode usar para recuperar propriedades do usuário e propriedades de perfil de usuário usando o modelo de objeto cliente .NET:

As propriedades do perfil de usuário das APIs do cliente são somente leitura (exceto a imagem de perfil, que você pode alterar usando o método PeopleManager.SetMyProfilePicture ). If you want to change other user profile properties, you must use the server object model.

Observação

A versão do cliente do objeto UserProfile não contém todas as propriedades do usuário como a versão do lado do servidor. No entanto, a versão do cliente fornecem os métodos de criação de um site pessoal do usuário atual. Para recuperar o UserProfile do lado do cliente para o usuário atual, use o método ProfileLoader.GetUserProfile .

Para obter mais informações sobre como trabalhar com perfis, consulte Trabalhar com perfis de usuário no SharePoint.

Pré-requisitos para configurar seu ambiente de desenvolvimento para recuperar as propriedades de perfil de usuário usando o modelo de objeto do cliente SharePoint .NET

Para criar um aplicativo de console que usa o modelo de objeto do cliente .NET para recuperar as propriedades de perfil de usuário, será necessário o seguinte:

  • SharePoint com perfis criados para o usuário atual e um usuário de destino

  • Visual Studio 2012

  • Permissões de conexão de Controle total para o perfil de usuário de acessar o aplicativo para o usuário atual de serviço.

Observação

Se você não estiver desenvolvendo no computador que está executando o SharePoint, obtenha o download de Componentes do Cliente do SharePoint que contém assemblies de cliente do SharePoint.

Criar o aplicativo de console que recupere as propriedades de perfil de usuário usando o modelo de objeto do cliente SharePoint .NET

  1. No computador de desenvolvimento, abra Visual Studio e escolha arquivo, novoprojeto.

  2. Na caixa de diálogo Novo Projeto, escolha .NET Framework 4.5 na lista suspensa na parte superior da caixa de diálogo.

  3. A partir de modelos de projeto, escolha Windows e, em seguida, escolha o Aplicativo de Console.

  4. Nome do projeto UserProfilesCSOMe escolha o botão OK.

  5. Adicione referências a assemblies a seguir:

  • Microsoft.SharePoint.Client
  • Microsoft.SharePoint.ClientRuntime
  • Microsoft.SharePoint.Client.UserProfiles
  1. No método Main, defina variáveis para a URL do servidor e o nome de usuário de destino, conforme mostrado no código a seguir.
const string serverUrl = "http://serverName/";
const string targetUser = "domainName\\userName";

Observação: lembre-se de substituir os http://serverName/ valores de espaço reservado e domainName\\\\userName antes de executar o código.

  1. Inicialize o contexto de cliente do SharePoint, conforme mostrado no código a seguir.
ClientContext clientContext = new ClientContext(serverUrl);
  1. Obtenha propriedades do usuário de destino do objeto PeopleManager, conforme mostrado no código a seguir.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetPropertiesFor(targetUser);

O objeto personProperties é um objeto do cliente. Alguns objetos de cliente não contêm nenhum dado até que eles são inicializados. Por exemplo, você não pode acessar os valores de propriedade do objeto personProperties até que você inicializar a ele. Se você tentar acessar uma propriedade antes de ele é inicializado, você receberá uma exceção de PropertyOrFieldNotInitializedException.

  1. Para inicializar o objeto personProperties, registre a solicitação que você deseja executar e, em seguida, executar a solicitação no servidor, conforme mostrado no código a seguir.
clientContext.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
clientContext.ExecuteQuery();

Quando você chama o método Load (ou o método LoadQuery ), você passar o objeto que você deseja recuperar ou alterar. Neste exemplo, a chamada para o método Load passa parâmetros opcionais para filtrar a solicitação. Os parâmetros são expressões lambda que solicitar apenas a propriedade AccountName e a propriedade UserProfileProperties do objeto personProperties.

Dica: para reduzir o tráfego de rede, solicite apenas as propriedades com as quais você deseja trabalhar ao chamar o método Load. Além disso, se você estiver trabalhando com vários objetos, agrupe várias chamadas para o método Load quando possível antes de chamar o método ExecuteQuery.

  1. Percorrer as propriedades de perfil de usuário e ler o nome e o valor de cada propriedade, conforme mostrado no código a seguir.
foreach (var property in personProperties.UserProfileProperties)
{
    Console.WriteLine(string.Format("{0}: {1}", 
        property.Key.ToString(), property.Value.ToString()));
}

Exemplo de código: recuperar todas as propriedades de perfil de usuário usando o modelo de objeto do cliente SharePoint .NET

O exemplo de código a seguir mostra como recuperar e iterar todas as propriedades do perfil de usuário de um usuário de destino, conforme descrito no procedimento anterior.

Observação

Substitua os http://serverName/ valores de espaço reservado e domainName\\\\userName antes de executar o código.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;

namespace UserProfilesCSOM
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target SharePoint site and
            // target user.
            const string serverUrl = "http://serverName/";  
            const string targetUser = "domainName\\\\userName";  

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the PeopleManager object and then get the target user's properties.
            PeopleManager peopleManager = new PeopleManager(clientContext);
            PersonProperties personProperties = peopleManager.GetPropertiesFor(targetUser);

            // Load the request and run it on the server.
            // This example requests only the AccountName and UserProfileProperties
            // properties of the personProperties object.
            clientContext.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
            clientContext.ExecuteQuery();

            foreach (var property in personProperties.UserProfileProperties)
            {
                Console.WriteLine(string.Format("{0}: {1}", 
                    property.Key.ToString(), property.Value.ToString()));
            }
            Console.ReadKey(false);

            // TODO: Add error handling and input validation.
        }
    }
}

Exemplo de código: recuperação de propriedades de perfil de usuário das pessoas que estão me seguindo usando o modelo de objeto do cliente SharePoint .NET

O exemplo de código a seguir mostra como obter, em um Suplemento do SharePoint, as propriedades de perfil de usuário de pessoas que estão acompanhando você.


string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

if (contextTokenString != null)
{
    Uri sharepointUrl = new Uri(Request.QueryString["SP.Url"]);

    ClientContext clientContext = TokenHelper.GetClientContextWithContextToken(sharepointUrl.ToString(), contextTokenString, Request.Url.Authority);

    PeopleManager peopleManager = new PeopleManager(clientContext);
    ClientObjectList<PersonProperties> peopleFollowedBy = peopleManager.GetMyFollowers();
    clientContext.Load(peopleFollowedBy, people => people.Include(person => person.PictureUrl, person => person.DisplayName));
    clientContext.ExecuteQuery();

    foreach (PersonProperties personFollowedBy in peopleFollowedBy)
    {
        if (!string.IsNullOrEmpty(personFollowedBy.PictureUrl))
        {
        Response.Write("<img src=\\"" + personFollowedBy.PictureUrl + "\\" alt=\\"" + personFollowedBy.DisplayName + "\\"/>");
        }
    }
    clientContext.Dispose();
}

Exemplo de código: recuperar um conjunto de propriedades de perfil de usuário usando o modelo de objeto do cliente SharePoint .NET

O exemplo de código a seguir mostra como recuperar um conjunto específico de propriedades de perfil de usuário para um usuário de destino.

Observação

Para recuperar o valor de apenas uma propriedade de perfil de usuário, use o método GetUserProfilePropertyFor .

Ao contrário do exemplo de código anterior que recupera um objeto PersonProperties para o usuário de destino, este exemplo chama o método PeopleManager.GetUserProfilePropertiesFor e passa em um objeto UserProfilePropertiesForUser que especifica o usuário de destino e as propriedades do perfil de usuário a serem recuperadas. GetUserProfilePropertiesFor retorna uma coleção de cadeias de caracteres> IEnumerable< que contém os valores das propriedades especificadas.

Observação

Substitua os http://serverName/ valores de espaço reservado e domainName\\\\userName antes de executar o código.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;

namespace UserProfilesCSOM
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target SharePoint site and the
            // target user.
            const string serverUrl = "http://serverName/";  
            const string targetUser = "domainName\\\\userName";  

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the PeopleManager object.
            PeopleManager peopleManager = new PeopleManager(clientContext);

            // Retrieve specific properties by using the GetUserProfilePropertiesFor method. 
            // The returned collection contains only property values.
            string[] profilePropertyNames = new string[] { "PreferredName", "Department", "Title" };
            UserProfilePropertiesForUser profilePropertiesForUser = new UserProfilePropertiesForUser(
                clientContext, targetUser, profilePropertyNames);
            IEnumerable<string> profilePropertyValues = peopleManager.GetUserProfilePropertiesFor(profilePropertiesForUser);

            // Load the request and run it on the server.
            clientContext.Load(profilePropertiesForUser);
            clientContext.ExecuteQuery();

            // Iterate through the property values.
            foreach (var value in profilePropertyValues)
            {
                Console.Write(value + "\\n");
            }
            Console.ReadKey(false);

            // TO DO: Add error handling and input validation.
        }
    }
}

Confira também