SharePoint 2013 Chame a API REST do aplicativo hospedado no SharePoint
-
10-12-2019 - |
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?
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?
Você também deve adicionar as permissões em ordem.Primeiro o locatário, depois os perfis de usuário (social)