как получить доступ к указанному c сайту команды в share-point с помощью rest apis - PullRequest
0 голосов
/ 09 января 2020

цель: Я пытаюсь получить доступ к указанному сайту группы c, который был создан в моей учетной записи общего ресурса с помощью API-интерфейсов REST, и создать там папку (папка «Документы» - расположение по умолчанию)

фактические результаты: Я получаю код ошибки 403. ниже приводится тело ответа, которое я получаю.

{
    "error": {
        "code": "-2147024891, System.UnauthorizedAccessException",
        "message": {
            "lang": "en-US",
            "value": "Access denied. You do not have permission to perform this action or access this resource."
        }
    }
}

ожидаемый результат: указанная папка должна быть создана, а код ответа должен быть 201 или 200

то, что я пробовал:

  1. сначала зарегистрировал приложение в обеих ресурсных точках, а также Azure
  2. получил токен на предъявителя, вызывающий разделяемую точку rest api
  3. протестировано get apis для share-point, и все работает как положено.
  4. перед каждым запросом я устанавливаю токен носителя в заголовке запроса
  5. Ниже приведены другие заголовки запроса который я устанавливаю
Content-Type : application/json;odata=verbose
X-RequestDigest : some random string
Accept : application/json;odata=verbose

Ниже приведен API REST для общей точки доступа, я использовал метод POST для создания папки

https://***.sharepoint.com/sites/TeamSite_ForB/_api/web/folders

Ниже приведен запрос тело, которое я отправляю

{ 
    "__metadata":{ 
        "type":"SP.Folder"
    },
    "ServerRelativeUrl":"/Shared Documents/buddhika-test-folder-03"
}

На сайте документации по share-point они предоставили формат API. Я пытался использовать этот формат, но также не смог получить результат.

Следующее приведено в документации по точке обмена.

Чтобы получить доступ к указанному сайту c, используйте следующая конструкция:

http://server/site/_api/web

в этом случае я попытался следующим образом

https://***.sharepoint.com/TeamSite_ForB/_api/web/folders

Я получаю ответ как 404 Не найдено без сообщения ответа.

Я просмотрел много документов, но не смог найти способ доступа к указанному c сайту группы. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 января 2020

URL-адрес REST API запроса, как показано ниже.

https://***.sharepoint.com/sites/TeamSite_ForB/_api/web/folders

Тело запроса выглядит следующим образом.

{ 
    "__metadata":{ 
        "type":"SP.Folder"
    },
    "ServerRelativeUrl":"Shared Documents/buddhika-test-folder-03"
}

Пример кода :

<script src="//code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
function getFormDigest() {
    return $.ajax({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/contextinfo",
        method: "POST",
        headers: { "Accept": "application/json; odata=verbose" }
    });
}

function createFolderTest() {
    var documentLibraryName = "Shared Documents";
    var folderName="buddhika-test-folder-03";
    if(folderName!=""){
        createfolder(documentLibraryName,folderName).done(function (data) {
            console.log('Folder creted succesfully');
        }).fail(function (error) {
            console.log(JSON.stringify(error));
        });     
    }
    return true;
}
function createfolder(documentLibraryName,folderName){

    var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/folders";
    return getFormDigest().then(function (data) {
        return $.ajax({
            url: requestUri,
            type: "POST",           
            contentType: "application/json;odata=verbose",
            data:JSON.stringify({'__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': documentLibraryName+'/'+folderName}),
            headers: {
                "accept":"application/json;odata=verbose",           
                "X-RequestDigest":data.d.GetContextWebInformation.FormDigestValue
            } 
        });
    });
}
</script>
<input type="button" onclick="createFolderTest()" value="Create Folder"/>
...