SharePoint 2013 Appeler l'API REST à partir de l'application hébergée SharePoint
-
10-12-2019 - |
Question
J'ai déployé avec succès une application hébergée SharePoint sur Office 365 et mon installation locale sur site.Tout ce que l'application vise à faire est d'appeler l'API REST pour le gestionnaire de profil utilisateur afin d'obtenir les propriétés de profil d'un utilisateur.Peu importe la façon dont j'essaie d'appeler l'API, cela échoue.
1) Si j'essaie de l'appeler en utilisant $.getJson
et l'url comme http://host web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
il échoue pour les appels inter-domaines.
2) Si j'essaie d'utiliser l'exécuteur de requête et l'URL comme http://app web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
il échoue (introuvable).
3) Si j'essaie d'utiliser l'exécuteur de requête et l'URL comme http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'"
;il échoue en cas d'accès refusé et/ou introuvable.
Si j'utilise exactement la même chose SP.AppContextSite
et essaie simplement d'obtenir le titre du site Web, cela fonctionne très bien.
Est le SP.AppContextSite
limité à l'objet Web uniquement ?Existe-t-il un moyen d'appeler l'API REST des profils utilisateur à partir d'une application hébergée SharePoint ?
La solution
Définir les autorisations sur User Profiles = Read
comme mentionné dans la réponse de Rob, le code suivant devrait fonctionner.Nous n'avons pas besoin d'utiliser l'exécuteur de requêtes car nous n'effectuons pas d'appel inter-domaines ici.
$.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);
}
});
Autres conseils
Votre application demande-t-elle de lire des autorisations sur des profils utilisateur?
Vous devez ajouter les autorisations dans l'ordre aussi.Le locataire d'abord, puis des profils d'utilisateurs (social)