SharePoint 2013 Chiama l'API di riposo dall'app Hosted SharePoint
-
10-12-2019 - |
Domanda
Ho implementato con successo un'app di SharePoint Hosted a Office 365 e il mio locale in premi installazione.Tutte le app volte a fare è chiamare l'API di riposo per il gestore del profilo utente per ottenere le proprietà del profilo di un utente.Non importa come provo a chiamare l'API fallisce.
1) Se provo a chiamarlo utilizzando $.getJson
e l'URL come http://host web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
non riesce per la chiamata di dominio cross.
2) Se provo a utilizzare l'esecutore di richiesta e l'URL come http://app web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
fallisce (non trovato).
3) Se provo a utilizzare l'esecutore di richiesta e l'URL come http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'"
;Non riesce all'accesso negato e / o non trovato.
Se utilizzo lo stesso identico generatodicetagcode e cerca di ottenere semplicemente il titolo del Web funziona bene.
è il SP.AppContextSite
limitato a solo l'oggetto web?C'è un modo per chiamare l'API di riposo profili utente da un'app di SharePoint Hosted?
Soluzione
Impostare le autorizzazioni su User Profiles = Read
come menzionato nella risposta di Rob e quindi il seguente codice dovrebbe funzionare.Non abbiamo bisogno di usare la richiesta di esecutore perché non stiamo facendo una chiamata di dominio croce qui.
$.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);
}
});
. Altri suggerimenti
La tua richiesta APP ha letto le autorizzazioni ai profili utente?
Devi aggiungere anche le autorizzazioni in ordine.In primo luogo, quindi profili utente (social)