Доступ к данным в веб-узле надстройки SharePoint
У меня следующая проблема. В среде SharePoint Online установлено размещенное приложение SharePoint, которое хранит свои данные в списке. Мне нужно получить данные из этого списка, но веб-сайт размещенного приложения SharePoint не позволяет осуществлять какой-либо доступ вне того же контекста веб-приложения / приложения.
Есть ли какое-либо решение, известное для этого? Я знаю, что защита веб-приложений существует по какой-то причине, но мне интересно, неужели нет никакого способа, которым размещенная надстройка Sharepoint может обмениваться данными вне контекста?
1 ответ
Решение
// Get Context of App Web
var context = new SP.ClientContext("<<SharePoint App Web Url>>");
//Set Proxy web to get data of parent web apps
var factory = new SP.ProxyWebRequestExecutorFactory("<<SharePoint App Web Url>>");
context.set_webRequestExecutorFactory(factory);
//get parent web context
var appContextSite = new SP.AppContextSite(context, "<<SharePoint App Host Web Url>>");
web = appContextSite.get_web();
//get parent web list
var lists = appContextSite.get_web().get_lists().getByTitle("<<List Name>>");
var caml = new SP.CamlQuery();
//Ceate CAML Query to get items from list
caml.set_viewXml('View><Query></Query></View>');
var listItems = lists.getItems(caml);
//load context of listItems
context.load(listItems);
context.executeQueryAsync(function () {
var listInfo = '';
var listEnumerator = listItems.getEnumerator();
while (listEnumerator.moveNext()) {
var oList = listEnumerator.get_current();
listInfo += ' ID: ' + oList.get_id().toString() + '\n';
}
alert(listInfo);
//here you can get list data
},
function (sender, args) {
console.log(args.errorMessage);
});