【问题标题】:Retrieving SharePoint Online objects permissions via Microsoft Graph API通过 Microsoft Graph API 检索 SharePoint Online 对象权限
【发布时间】:2019-08-09 05:40:02
【问题描述】:

我需要映射所有 SharePoint Online 对象(站点、列表、列表项、附件、文件、文件夹)的权限。似乎可以通过 CSOM API 实现,但在 Microsoft Graph 中没有发现任何类似的东西。

以下查询成功retrieves a requested item

https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/items/{item ID}/

但是下面的查询没有像我预期的那样返回权限:

https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/items/{item ID}/permissions

我收到以下错误:

{
    "error": {
        "code": "BadRequest",
        "message": "Resource not found for the segment 'permissions'.",
        "innerError": {
            "request-id": "ab9f4cfe-f0e1-433b-9767-96d4b3e58c59",
            "date": "2019-03-18T18:52:21"
        }
    }
}  

以下查询也收到相同的错误:

https://graph.microsoft.com/beta/sites/root/Lists/{List ID}/permissions

一年前有人问过very similar question,答案是不可能。

现在可以吗?如果是,那么我做错了什么?

【问题讨论】:

    标签: microsoft-graph-api sharepoint-online


    【解决方案1】:

    ListListItem 资源文档均未将 permissions 显示为有效的属性或关系。

    如果List 是一个文档库,那么您可以使用关联的DriveItem 来查看它的permission 集合:

    GET /v1.0/sites/root/lists/{list-id}/items/{item-id}/driveitem/permissions
    

    例如,在Graph Explorer 中执行/v1.0/sites/root/lists/eacf1ff2-7f98-4f71-963a-44e0cf35f608/items/4/driveitem/permissions 会返回:

    {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('root')/lists('eacf1ff2-7f98-4f71-963a-44e0cf35f608')/items('4')/driveItem/permissions",
      "value": [
        {
          "id": "VGVhbSBTaXRlIE93bmVycw",
          "roles": ["owner"],
          "grantedTo": {
            "user": {
              "displayName": "Team Site Owners"
            }
          },
          "inheritedFrom": {}
        },
        {
          "id": "VGVhbSBTaXRlIFZpc2l0b3Jz",
          "roles": ["read"],
          "grantedTo": {
            "user": {
              "displayName": "Team Site Visitors"
            }
          },
          "inheritedFrom": {}
        },
        {
          "id": "VGVhbSBTaXRlIE1lbWJlcnM",
          "roles": ["write"],
          "grantedTo": {
            "user": {
              "displayName": "Team Site Members"
            }
          },
          "inheritedFrom": {}
        },
        //...
    

    【讨论】:

    • 感谢您的回复!实际上, GET /v1.0/sites/root/lists/{list-id}/items/{item-id}/driveitem/permissions 检索了特定项目的权限。但是有没有办法检索网站或特定列表上的所有权限?
    • 恐怕不行。 Drive API 支持权限,但不支持 SiteList API。
    【解决方案2】:

    https://graph.microsoft.com/v1.0/sites/fa9c83ba-e4cb-43e7-b00d-cceb7a3a1ad4/lists/7b3815ab-5bd9-49f4-b99b-69bb8b7a62cf/items/1/driveitem/permissions

    {
        "error": {
            "code": "invalidRequest",
            "message": "Cannot request driveItem for an item that is not in a document library",
            "innerError": {
                "date": "2021-03-02T07:46:28",
                "request-id": "ef9ca55a-74c0-4498-a040-2349ea03b2fe",
                "client-request-id": "29419c1b-b33e-ec2e-4ad4-b480779a86b2"
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多