Partilhar via


Recuperar propriedades de perfil de usuário usando o modelo de objeto JavaScript no SharePoint

Saiba como recuperar as propriedades de usuário e propriedades de perfil de usuário, via programação, usando o modelo de objeto JavaScript do SharePoint.

Quais são as propriedades de usuário e 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 PersonProperties contém propriedades comumente usadas (como accountName, displayName e email) que são mais fáceis de acessar.

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 JavaScript:

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. Para saber mais sobre como trabalhar com perfis de usuário, confira Trabalhar com perfis de usuário no SharePoint.

Observação

O objeto UserProfile do lado do cliente 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 a ele, use o método ProfileLoader.getUserProfile .

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

Para criar uma página de aplicativo que utiliza o modelo de objeto do JavaScript para recuperar as propriedades de usuário, você precisará de:

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

  • Visual Studio 2012

  • Office Developer Tools para Visual Studio 2013

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

Criar a página de aplicativo em Visual Studio 2012

  1. No servidor executando o SharePoint, abra o 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. Na lista de Modelos, expanda oOffice/SharePoint, escolha a categoria de Soluções do SharePoint e, em seguida, escolha o modelo de Projeto do SharePoint .

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

  5. Na caixa de diálogo Assistente de personalização do SharePoint, digite a URL de seu site do SharePoint de destino, selecione implantar como uma solução de farm e escolha o botão Concluir.

  6. No Solution Explorer, abra o menu de atalho para o projeto UserProfilesJSOM e, em seguida, adicione uma lista do SharePoint "Layouts" mapeado a pasta.

  7. Na pasta Layouts, abra o menu de atalho para a pasta UserProfilesJSOM e, em seguida, adicione uma nova página de aplicativos do SharePoint denominadaUserProfiles.aspx.

    Observação: os exemplos de código neste artigo definem código personalizado na marcação de página, mas não utilizam o arquivo de classe code-behind que o Visual Studio cria para a página.

  8. Abra o menu de atalho para a página UserProfiles.aspx e escolha definida como Item de inicialização.

  9. Na marcação para a página UserProfiles.aspx, cole o seguinte código dentro das marcas de asp:Content "Main". Este código adiciona um controle de span que exibe os resultados da consulta, os controles de SharePoint:ScriptLink que fazem referência a arquivos da biblioteca de classe do SharePoint JavaScript e marcas de script para conter a lógica personalizada.

<span id="results"></span><br />
<SharePoint:ScriptLink ID="ScriptLink1" name="SP.js" runat="server"
    ondemand="false" localizable="false" loadafterui="true" />
<SharePoint:ScriptLink ID="ScriptLink2" name="SP.UserProfiles.js" runat="server"
    ondemand="false" localizable="false" loadafterui="true" />
<script type="text/javascript">
    // Replace this comment with the code for your scenario.
</script>
  1. Para adicionar lógica para recuperar as propriedades de perfil de usuário, substitua o comentário entre as marcas de script com o exemplo de código de um dos seguintes cenários:
  1. Para testar a página de aplicativo, na barra de menus, escolha Depurar, Iniciar Depuração. Se você tiver solicitado que modifique o arquivo web.config, escolha o botão OK .

Exemplo de código: recuperar as propriedades de perfil de usuário do objeto PersonProperties e sua propriedade userProfileProperties no modelo de objeto de JavaScript do SharePoint

O exemplo de código a seguir mostra como obter propriedades de perfil de usuário para um usuário de destino consultando o objeto PersonProperties e sua propriedade userProfileProperties . Ele mostra como:

Observação

[!OBSERVAçãO] Cole o seguinte código entre as marcas de script que você adicionou no arquivo UserProfiles.aspx no procedimento criar a página do aplicativo . Substitua o valor de espaço reservado de domainName\\userName antes de executar o código. (Esse exemplo de código não usa o arquivo de classe code-behind.)


var personProperties;

// Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');

function getUserProperties() {

    // Replace the placeholder value with the target user's credentials.
    var targetUser = "domainName\\userName";

    // Get the current client context and PeopleManager instance.
    var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

    // Get user properties for the target user.
    // To get the PersonProperties object for the current user, use the
    // getMyProperties method.
    personProperties = peopleManager.getPropertiesFor(targetUser);

    // Load the PersonProperties object and send the request.
    clientContext.load(personProperties);
    clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {

    // Get a property directly from the PersonProperties object.
    var messageText = " \\"DisplayName\\" property is "
        + personProperties.get_displayName();

    // Get a property from the UserProfileProperties property.
    messageText += "<br />\\"Department\\" property is "
        + personProperties.get_userProfileProperties()['Department'];
    $get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
    $get("results").innerHTML = "Error: " + args.get_message();
}

Exemplo de código: recuperar um conjunto de propriedades de perfil de usuário usando o método getUserProfilePropertiesFor no modelo de objeto de JavaScript do SharePoint

O exemplo de código a seguir recupera os valores de um conjunto especificado de propriedades de perfil de usuário para um usuário de destino usando o método getUserProfilePropertiesFor . Ele mostra como:

  • Crie um objeto UserProfilePropertiesForUser que especifica o usuário de destino e as propriedades do perfil de usuário a serem recuperadas. Este exemplo obtém a propriedade PreferredName e a propriedade Department.

  • Obtenha os valores das propriedades especificadas usando o método getUserProfilePropertiesFor e passando o objeto UserProfilePropertiesForUser . (Para recuperar o valor da propriedade de perfil de usuário apenas um, use o método getUserProfilePropertyFor .)

  • Obtenha os valores da matriz de valores de propriedade retornado.

Observação

[!OBSERVAçãO] Cole o seguinte código entre as marcas de script que você adicionou no arquivo UserProfiles.aspx no procedimento criar a página do aplicativo . Substitua o valor de espaço reservado de domainName\\\\userName antes de executar o código. (Esse exemplo de código não usa o arquivo de classe code-behind.)


var userProfileProperties;

// Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');

function getUserProperties() {

    // Replace the placeholder value with the target user's credentials.
    var targetUser = "domainName\\\\userName";

    // Get the current client context and PeopleManager instance.
    var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

    // Specify the properties to retrieve and target user for the 
    // UserProfilePropertiesForUser object.
    var profilePropertyNames = ["PreferredName", "Department"];
    var userProfilePropertiesForUser = 
        new SP.UserProfiles.UserProfilePropertiesForUser(
            clientContext,
            targetUser,
            profilePropertyNames);

    // Get user profile properties for the target user.
    // To get the value for only one user profile property, use the
    // getUserProfilePropertyFor method.
    userProfileProperties = peopleManager.getUserProfilePropertiesFor(
        userProfilePropertiesForUser);

    // Load the UserProfilePropertiesForUser object and send the request.
    clientContext.load(userProfilePropertiesForUser);
    clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {
    var messageText = "\\"PreferredName\\" property is " 
        + userProfileProperties[0];
    messageText += "<br />\\"Department\\" property is " 
        + userProfileProperties[1];
    $get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
    $get("results").innerHTML = "Error: " + args.get_message();
}

Confira também