【问题标题】:Sharepoint Online list items query returns empty array with Microsoft Graph APISharepoint Online 列表项查询返回带有 Microsoft Graph API 的空数组
【发布时间】:2020-10-22 16:37:57
【问题描述】:

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相关。
  • 天哪!而已!我没有意识到这一点。谢谢!!!
  • 您好,如果发布的答案解决了您的问题,请单击复选标记将其标记为答案。这样做可以帮助其他人找到他们问题的答案。见meta.stackexchange.com/questions/5234/…

标签: powershell microsoft-graph-api sharepoint-online


【解决方案1】:

由于您使用的是 Microsoft Graph API,因此您需要在 Azure AD 门户中而不是在共享点下选择 microsoft graph api 权限。 sharepoint下的权限与sharepoint API相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多