1

如何使用 MS Graph Api 获取文件夹(或文件)的当前用户权限角色?

我尝试:https://graph.microsoft.com/[v1.0 或 beta]/drives/[driveId]/items/[itemId]/permissions

但是除了所有者之外的所有人的角色数组都是空的......

如果它可以在文件夹中读取或写入,我想向用户显示一个特定的图标。

谢谢

--编辑1--

用户没有对该文件夹的直接权限,但他在具有读取角色的安全组中。

用户可以读取(打开)该文件夹中的任何信息,我只需要知道他是否可以在文件夹中读写(或不)。

当我尝试在没有良好权限的情况下写入时,我收到了 403 错误,我想知道“之前”用户无法在该文件夹上写入的错误..

--编辑2--

我尝试了文档所说的所有内容:https ://docs.microsoft.com/en-us/graph/api/permission-get?view=graph-rest-1.0&tabs=http

GET /drives/{drive-id}/items/{item-id}/permissions/{perm-id} => 角色为空

GET /groups/{group-id}/drive/items/{item-id}/permissions/{perm-id} => 安全组没有任何驱动器

GET /me/drive/items/{item-id}/permissions/{perm-id} => 项目(文件夹)不在用户驱动器中

GET /sites/{site-id}/drive/items/{item-id}/permissions/{perm-id} => 这不是一个共享点站点

GET /users/{user-id}/drive/items/{item-id}/permissions/{perm-id} => 角色为空

我不明白的是,我可以毫无问题地读取、列出、添加和删除文件(如果我有写角色),但我看不到角色列表。

-- 编辑 3 --

如果你想重现 pb 傻瓜这个:

  • 在 Azure Active Directory (AAD) 中创建一个用户,向其中添加一个名为“User1”的 Microsoft Office 365 许可证(在我的业务案例中)

  • 在其中创建一个名为“共享”的 Onedrive for Business 文件夹

  • 在 AAD 中创建一个安全组(让它命名为“Readers”)

  • 与“读者”组共享上一个文件夹并将其设为只读(在我的情况下,我使用 onedrive 在线站点来执行此操作)

  • 在 AAD 中创建名为“User2”的其他用户(有或没有许可证)

  • 将其添加到“读者”组

现在,转到Graph Explorer并在输入文本框中输入此 url:

https://graph.microsoft.com/v1.0/drives/[User1的driveId]/items/[“共享”文件夹的itemId]/Permissions

你应该得到这个结果:

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('...')/items('...')/permissions",
"value": [        
    {
        "id": "...",
        "roles": [], 
        "grantedTo": {
            "user": {
                "displayName": "Readers"
            }
        }
    },
    {
        "id": "...",
        "roles": [
            "owner"
        ],
        "grantedTo": {
            "user": {
                "email": "user1@mydomain.com",
                "id": "...",
                "displayName": "User1"
            }
        }
    }
]

}

你可以看到,第一个角色数组是空的,但所有者角色数组不是..

4

0 回答 0