I am creating a provider hosted app for SharePoint online and trying to get a list using rest API in a view but I am getting

403 error access denied error.

I have already set permissions in app Manifest file (Web- Full control). Do I need to do something else?

1 Answer 1


Try to use cross domain library for this. Sample code:

    <title>Cross-domain sample</title>
    <!-- This is the placeholder for the announcements -->
    <div id="renderAnnouncements"></div>
    <script type="text/javascript">
      var hostweburl;
      var appweburl;

      // Load the required SharePoint libraries
      $(document).ready(function () {
        //Get the URI decoded URLs.
        hostweburl =
        appweburl =

        // resources are in URLs in the form:
        // web_url/_layouts/15/resource
        var scriptbase = hostweburl + "/_layouts/15/";

        // Load the js files and continue to the successHandler
        $.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);

      // Function to prepare and issue the request to get
      //  SharePoint data
      function execCrossDomainRequest() {
        // executor: The RequestExecutor object
        // Initialize the RequestExecutor with the add-in web URL.
        var executor = new SP.RequestExecutor(appweburl);

        // Issue the call against the add-in web.
        // To get the title using REST we can hit the endpoint:
        //      appweburl/_api/web/lists/getbytitle('listname')/items
        // The response formats the data in the JSON format.
        // The functions successHandler and errorHandler attend the
        //      sucess and error events respectively.
                  appweburl +
              method: "GET",
              headers: { "Accept": "application/json; odata=verbose" },
              success: successHandler,
              error: errorHandler

      // Function to handle the success event.
      // Prints the data to the page.
      function successHandler(data) {
        var jsonObject = JSON.parse(data.body);
        var announcementsHTML = "";

        var results = jsonObject.d.results;
        for (var i = 0; i < results.length; i++) {
          announcementsHTML = announcementsHTML +
              "<p><h1>" + results[i].Title +
              "</h1>" + results[i].Body +

        document.getElementById("renderAnnouncements").innerHTML =

      // Function to handle the error event.
      // Prints the error message to the page.
      function errorHandler(data, errorCode, errorMessage) {
        document.getElementById("renderAnnouncements").innerText =
            "Could not complete cross-domain call: " + errorMessage;

      // Function to retrieve a query string value.
      // For production purposes you may want to use
      //  a library to handle the query string.
      function getQueryStringParameter(paramToRetrieve) {
        var params =
        var strParams = "";
        for (var i = 0; i < params.length; i = i + 1) {
          var singleParam = params[i].split("=");
          if (singleParam[0] == paramToRetrieve)
            return singleParam[1];

Some links for your reference. https://dev.office.com/sharepoint/docs/sp-add-ins/access-sharepoint-data-from-add-ins-using-the-cross-domain-library


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.