Quantcast
Channel: SharePoint 2013 - Development and Programming forum
Viewing all articles
Browse latest Browse all 25064

REST from a SharePoint hosted App using JSOM to read a list in a DIFFERENT site collection

$
0
0

I'm struggling to find a resolution for this and am hoping somebody can help please?

If I debug against my top-level site (ie - set my site url to 'http://mysharepointserver/") and use JSOM to bring back the entries in a specified list within that top level site using the RESTful endpoint, all is good :-

var hostweburl;
var appweburl;
// This code runs when the DOM is ready and creates a context object which is needed to use the SharePoint object model
$(document).ready(function () {
    getUserName();
    hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
    appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));
    var scriptbase = hostweburl + "/_layouts/15/";
    $.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);
});
function execCrossDomainRequest() {
    var listname = "InvoiceRecharges";
    var executor = new SP.RequestExecutor(appweburl);
    var target = hostweburl;
    //target = target + "/sites/AnotherSiteCollection";
    $('#TopSite').text(target);
    executor.executeAsync(
        {
            url: appweburl + "/_api/SP.AppContextSite(@target)/web/lists/getbytitle('InvoiceRecharges')/items?@target='" + target + "'",
            method: "GET",
            headers: { "Accept": "application/json; odata=verbose" },
            success: successHandler,
            error:errorHandler
        }
        );
}
function successHandler(data) {
    var jsonObject = JSON.parse(data.body);
    var listHTML = "";
    var results = jsonObject.d.results;
    for (var i = 0; i < results.length; i++) {
        listHTML = listHTML + "<p>" + results[i].Title + " - (" + results[i].ItemCount + ")</p>";
    }
    document.getElementById("output").innerHTML = listHTML;
}
function errorHandler(data,errorCode,errorMessage) {
    $('#output').text('Oops - ' + data + " - " + errorCode + " - " + errorMessage);
}

However, I have a requirement to call in to a different sitecollection in the farm and read / write entries from a different list - for example :

http://mysharepointserver/sites/anothersitecollection

If I make modifications to my 'execCrossDomainRequest' function and uncomment the suffix to target as follows :

var target = hostweburl; 
target = target + "/sites/anothersitecollection"; 

- I receive error 1002 / Unauthorized as the returned errorCode and errorMessage in the failure routine. My HOSTWEB in this instance is the top level site of "http://mysharepointserver" and I can suffix this "target" with any subsites in this same site collection .... however it all falls down when referencing a different site collection.

I've tried setting Tenant / FullPermissions in the App Manifest to no avail ....

Any help would be much appreciated (assuming it's even possible from a SharePoint-hosted app using JSOM with REST??)

Thanks

Steve




Viewing all articles
Browse latest Browse all 25064

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>