powershell - Sharepoint Online 列表项查询返回带有 Microsoft Graph API 的空数组
问题描述
TLDR:我正在尝试使用 Powershell 中的 Microsoft Graph API 获取 Sharepoint Online 列表的列表项。但我得到的只是一个空数组。
我在 Azure 中创建了一个应用程序并授予它以下权限:
我知道我需要的权限太多了,但是为了排除故障并确保这不是权限问题,我将它们全部添加。
这是我用来获取 Graph API 令牌的代码:
$TenantId = 'my-tenant-id'
$ClientId = 'my-client-id'
$ClientSecret = 'my-client-secret'
$Body = @{
'tenant' = $TenantId
'client_id' = $ClientId
'scope' = 'https://graph.microsoft.com/.default'
'client_secret' = $ClientSecret
'grant_type' = 'client_credentials'
}
$Params = @{
'Uri' = "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token"
'Method' = 'Post'
'Body' = $Body
'ContentType' = 'application/x-www-form-urlencoded'
}
$AuthResponse = Invoke-RestMethod @Params
$Headers = @{
'Authorization' = "Bearer $($AuthResponse.access_token)"
}
当我运行以下命令时,只是为了获取列表信息,它可以工作。
$SiteID = "my-site-id"
$ListID = "my-list-id"
$url = "https://graph.microsoft.com/v1.0/sites/$($SiteID)/lists/$($ListID)"
$Result = Invoke-RestMethod -Uri $url -Headers $Headers -Method Get -ContentType "application/json"
$Result | fl
这给了我以下结果:
@odata.context : https://graph.microsoft.com/v1.0/$metadata#sites('abc.sharepoint.com%2Csite-id')/lists/$entity
@odata.etag : "list-id,1139"
createdDateTime : 2020-09-22T08:18:49Z
description :
eTag : "list-id,1139"
id : list-id
lastModifiedDateTime : 2020-10-21T14:53:18Z
name : list-name
webUrl : https://abc.sharepoint.com/sites/my-site/Lists/my-list
displayName : my-list
createdBy : @{user=}
lastModifiedBy : @{user=}
parentReference : @{siteId=abc.sharepoint.com,list-id
cca2b90}
list : @{contentTypesEnabled=True; hidden=False; template=genericList}
所以我知道我使用 Graph API 进行的身份验证是有效的。
但是当我想获取实际的列表项时,我得到了一个空数组。
命令:
$SiteID = "my-site-id"
$ListID = "my-list-id"
$url = "https://graph.microsoft.com/v1.0/sites/$($SiteID)/lists/$($ListID)/items?expand=fields"
$Result = Invoke-RestMethod -Uri $url -Headers $Headers -Method Get -ContentType "application/json"
$Result | fl
结果:
@odata.context : https://graph.microsoft.com/v1.0/$metadata#sites('abc.sharepoint.com%2Csite-id')/lists('list-id')/items
value : {}
我不知道问题是什么。这里的类似帖子让我认为这是一个权限问题。但是我已经把书中的所有权限都扔给了它,但它仍然没有返回列表项。
帮助将不胜感激。
解决方案
由于您使用的是 Microsoft Graph API,因此您需要在 Azure AD 门户中而不是在共享点下选择 microsoft graph api 权限。sharepoint 下的权限与sharepoint API 相关。
推荐阅读
- python - python3为什么'字符串'不是str?
- reactjs - 如何将参数传递给reactjs中的函数?
- docker - 使用 sysVinit 启动 Docker 守护进程
- php - Wordpress/OptimizePress 在我的新登录表单中重定向 wp-login.php
- jquery - SVG 显示动画错误 - 虚线未正确显示
- javascript - reactjs Count down 组件在 IOS 设备上返回 NaN
- neural-network - 使用 Keras 将空间输入与标签相结合作为 CNN 的输入
- vue.js - 无法使用 Vuex 获取所有组件的数据
- java - 如何使用触摸监听器并仅在触摸按钮时播放声音?
- python - Unix 时间戳实际跟踪什么?