SharePoint 2013. Вызов REST API из приложения, размещенного на SharePoint.
-
10-12-2019 - |
Вопрос
Я успешно развернул размещенное приложение SharePoint в Office 365 и в своей локальной установке.Все, что предназначено приложением, — это вызвать REST API для менеджера профилей пользователей, чтобы получить свойства профиля пользователя.Независимо от того, как я пытаюсь вызвать API, это не удается.
1) Если я попытаюсь вызвать его, используя $.getJson
и URL как http://host web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
это не удается для междоменного вызова.
2) Если я попытаюсь использовать исполнитель запроса и URL-адрес как http://app web url/_api/SP.UserProfiles.PeopleManager/GetMyProperties
он терпит неудачу (не найден).
3) Если я попытаюсь использовать исполнитель запроса и URL-адрес как http://app web url/_api/SP.AppContextSite(@t)/SP.UserProfiles.PeopleManager/GetMyProperties?@t='" + encodeURIComponent(hostweburl) + "'"
;он терпит неудачу, если доступ запрещен и/или не найден.
Если я использую точно такой же SP.AppContextSite
и пытается просто получить название сети, все работает отлично.
Это SP.AppContextSite
ограничено только веб-объектом?Есть ли способ вызвать REST API профилей пользователей из приложения, размещенного на SharePoint?
Решение
Установите разрешения на User Profiles = Read
как упоминалось в ответе Роба, тогда следующий код должен работать.Нам не нужно использовать исполнитель запросов, поскольку здесь мы не делаем междоменный вызов.
$.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);
}
});
Другие советы
Запрашивает ли ваше приложение разрешения на чтение профилей пользователей?
Вам также необходимо добавить разрешения по порядку.Сначала арендатор, затем профили пользователей (социальные сети)