SharePoint REST - выборка элементов списка с skiptoken дает HTTP 403 - PullRequest
0 голосов
/ 12 ноября 2018

Я получаю кучу элементов списка с сайта SharePoint Online, используя скрипт PowerShell. Мне нужно получить все предметы, используя

/_api/web/lists/getbytitle('MyList')/items

REST call.
Я могу назвать эту конечную точку очень хорошо и получить первые 100 предметов. Но когда я вызываю URL для «skiptoken», который я получил в ответе, я получаю HTTP 403 (Forbidden).

Что я делаю не так?

1 Ответ

0 голосов
/ 13 ноября 2018

После борьбы я решил вернуться к использованию запросов CSOM и CAML. Это не так гибко, как служба REST и делает работу с результатом немного сложнее, но делает свое дело (код функционален, но может быть хорошей идеей разбить это на части):

$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($user , $password)
$context.Credentials = $credentials

$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$query.ViewXml = '...'

$web = $ctx.Web
$lists = $web.Lists
$list = $lists.GetById($listID)

$ctx.Load($lists)
$ctx.Load($list)
$ctx.ExecuteQuery()

$resultCollection = New-Object 'System.Collections.ArrayList'

do {

    $items = $list.GetItems($query)
    $ctx.Load($items)
    $ctx.ExecuteQuery()

    $items | ForEach-Object {
        $item = #process item here
        $resultCollection.Add($item) |Out-Null
    }

    $query.ListItemCollectionPosition = $items.ListItemCollectionPosition #advance cursor

} while ($query.ListItemCollectionPosition -ne $null)
...