list - SharePoint REST - 使用 skiptoken 获取列表项提供 HTTP 403
问题描述
我正在使用 PowerShell 脚本从 SharePoint Online 网站获取一堆列表项。我需要使用
/_api/web/lists/getbytitle('MyList')/items
REST 调用。
我可以很好地调用这个端点并接收前 100 个项目。但是,当我调用响应中收到的“skiptoken”的 URL 时,我得到一个HTTP 403 (Forbidden)
.
我究竟做错了什么?
解决方案
在挣扎之后,我决定重新使用 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)
推荐阅读
- java - Java 泛型 - 不适用于参数
- android - 如何从 WebKit Cookiemanager cookie 中获取过期/持久性?
- flutter - 无法以可靠的 null 安全性运行,因为以下依赖项不支持 null 安全性
- python - 无法使用基于 python 的库 ftplib 连接到本地 FTP 服务器
- java - 无法连接到 postgres Scala slick org.postgresql.util.PSQLException:连接尝试失败
- javascript - 如何使用 html-webpack-plugin 在我的 webpack 模板 html 中包含脚本标签
- c# - 从给定键和值的字典数组中获取字典的索引
- azure-active-directory - Microsoft Graph - 如何为用户扩展属性“过滤”
- python - 使用 LCG 方法生成随机数
- flutter - 构建模块“nanopb”时无法构建 iOS 应用程序