Pergunta

Implantei com êxito um aplicativo hospedado do SharePoint no Office 365 e minha instalação local local.Tudo o que o aplicativo pretende fazer é chamar a API REST para que o gerenciador de perfil do usuário obtenha as propriedades do perfil de um usuário.Não importa como eu tente chamar a API, ela falha.

1) Se eu tentar chamá-lo usando $.getJson e o URL como http://host web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties ele falha na chamada entre domínios.

2) Se eu tentar usar o executor de solicitação e a URL como http://app web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties ele falha (não encontrado).

3) Se eu tentar usar o executor de solicitação e a URL como http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'";falha no acesso negado e/ou não encontrado.

Se eu usar exatamente o mesmo SP.AppContextSite e tenta simplesmente obter o título da web, ele funciona perfeitamente.

É o SP.AppContextSite limitado apenas ao objeto da web?Existe alguma maneira de chamar a API REST de perfis de usuário de um aplicativo hospedado no SharePoint?

Foi útil?

Solução

Ativar as permissões User Profiles = Read conforme mencionado na resposta de Rob e o código a seguir deve funcionar.Não precisamos usar o executor de solicitação, pois não estamos fazendo uma chamada entre domínios aqui.

$.ajax({

    url:"http://<app web url>/_api/SP.UserProfiles.PeopleManager/GetMyProperties",
    headers:{ Accept:"application/json;odata=verbose" },
    success:function(data){
      alert(data.d.DisplayName);
    },
    error:function(jQxhr,errorCode,errorThrown){
      alert(errorThrown);
    }
});

Outras dicas

Seu aplicativo solicita permissões de leitura para perfis de usuário?

enter image description here

Você também deve adicionar as permissões em ordem.Primeiro o locatário, depois os perfis de usuário (social)

App Permissions

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top