SharePoint 2013 Llame al resto API de la aplicación Alojada de SharePoint
-
10-12-2019 - |
Pregunta
He implementado con éxito una aplicación Hosted de SharePoint a Office 365 y mi localización local en la instalación de la premisa.Toda la aplicación tiene como objetivo hacer es llamar a la API de reposo para que el Administrador de perfiles de usuario obtenga las propiedades de perfil de un usuario.No importa cómo intento llamar a la API que falla.
1) Si intento llamarlo usando $.getJson
y la URL como http://host web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
, falla para la llamada de dominio cruzado.
2) Si intento usar la ejecutora de solicitud y la URL como http://app web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
, falla (no encontrado).
3) Si trato de usar la ejecutora de solicitud y la URL como http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'"
;Falla en el acceso denegado y / o no encontrado.
Si uso exactamente el mismo SP.AppContextSite
y intenta simplemente obtener el título de la web, funciona bien.
¿Es el SP.AppContextSite
limitado a solo el objeto web?¿Hay alguna forma de llamar a la API de descanso de los perfiles de usuario de una aplicación alojada de SharePoint?
Solución
Configure los permisos en User Profiles = Read
como se menciona en la respuesta de ROB y luego el siguiente código debería funcionar.No necesitamos usar el ejecutor de Solicitud, ya que no estamos haciendo una llamada de dominio cruzado aquí.
$.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);
}
});
Otros consejos
¿Su solicitud de aplicación lee permisos para los perfiles de usuario?
Tienes que agregar los permisos en orden también.Inquilino primero, luego los perfiles de usuario (social)