Microsoft graph api 如何获得远程驱动器项的权限?

Microsoft graph api 如何获得远程驱动器项的权限?,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,使用MS Graph REST API,我可以检索与我共享的driveItems。这些“远程”驱动器项的权限包括将我标识为用户的权限。但是,该权限对象中没有“角色”(具体来说,角色列表中没有条目) 我尝试查看RemoteItem属性,但这些属性不包含任何安全信息 确定我的用户对该特定DriveItem的权限的正确方法是什么 到目前为止,我已经使用C#MSGraph SDK进行了测试,发现与我共享的所有项目都有一个空的角色列表 我还使用了在线图形浏览器,并确定这是正确的 当我使用Graph Exp

使用MS Graph REST API,我可以检索与我共享的driveItems。这些“远程”驱动器项的权限包括将我标识为用户的权限。但是,该权限对象中没有“角色”(具体来说,角色列表中没有条目)

我尝试查看RemoteItem属性,但这些属性不包含任何安全信息

确定我的用户对该特定DriveItem的权限的正确方法是什么

到目前为止,我已经使用C#MSGraph SDK进行了测试,发现与我共享的所有项目都有一个空的角色列表

我还使用了在线图形浏览器,并确定这是正确的

当我使用Graph Explorer检索实际项目时,请注意来自MSFT的示例片段中的以下内容:

        {
        "id": "aTowIy5mfG1lbWJlcnNoaXB8YWxleHdAbTM2NXgyMTQzNTUub25taWNyb3NvZnQuY29t",
        "roles": [],
        "grantedTo": {
            "user": {
                "email": "AlexW@M365x214355.onmicrosoft.com",
                "id": "4782e723-f4f4-4af3-a76e-25e3bab0d896",
                "displayName": "Alex Wilber"
            }
        }
    },
(没有为用户列出任何角色?)


由于我的用户被显式地列在检索到的实际驱动器项的一个许可证中,因此我希望角色也会指定我的访问/实际权限。

以下端点:

GET /drives/{remoteItem-driveId}/items/{remoteItem-id}/permissions
返回共享在

结果

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b%21IZJbPb0BjUKDAjMnMOSRf44bwdRO75NGunQibG16o65AcVUi0kiOSZ9k4-NxVd6C')/items('01H24BBVK3QUEPTCR2MNB3HMLTNUZINN54')/permissions",
    "value": [
        {
            "id": "c0594808-fbbb-4c56-9b62-bc37307a2424",
            "roles": [
                "write"
            ],
            "link": {
                "scope": "anonymous",
                "type": "edit",
                "webUrl": "https://contoso-my.sharepoint.com/:w:/g/personal/jdoe_contoso_onmicrosoft_com/EVuFCPmKOmNDs7FzbTKGt7wBxdHHpbjDMOzy3_ng2KHCAQ"
            }
        },
        {
            "id": "8a03ff0b-5196-4585-b8a9-4d95115e10c2",
            "roles": [
                "read"
            ],
            "link": {
                "scope": "anonymous",
                "type": "view",
                "webUrl": "https://contoso-my.sharepoint.com/:w:/g/personal/jdoe_contoso_onmicrosoft_com/EVuFCPmKOmNDs7FzbTKGt7wB8wPZsfAqSd-IQYE337GDjg"
            }
        },
        {
            "id": "aTowIy5mfG1lbWJlcnNoaXB8dmdyZW1AbWVkaWFkZXY4OC5vbm1pY3Jvc29mdC5jb20",
            "roles": [
                "owner"
            ],
            "grantedTo": {
                "user": {
                    "email": "jdoe@contoso.onmicrosoft.com",
                    "id": "1ee49b6f-4632-4806-a4dd-e065844f9cd1",
                    "displayName": "Jon Doe"
                }
            }
        }
    ]
}
以下示例演示如何通过打印
角色
属性:


是的,我同意这是记录在案的终点。但是,如果您真的尝试了,它将返回类似于我在OP中的示例的内容。也就是说,角色作为空列表返回。您是否能够检索到不同的结果?谢谢你的帖子@AWeber,
permissions
endpoint返回结果,包括我这边的角色,不管怎么说,答案已经更新了。然后出现了一些问题……如果我使用未经验证的Graph Explorer并与我共享,第一项是ID:01omqy4ziqkygmw5qlmfb2fh7h5n6yuyp。查看RemoteItem和ParentReference,如果您尝试:您得到了与我发布的内容类似的内容???@AWeber,是的,提供的查询看起来有效,根据,请确保至少授予以下权限:
Files.Read.All,Sites.Read.All
在没有角色的情况下,您提出了什么请求来获得
权限
?我在下面提到过,但要清楚:转到图形浏览器,不要登录(或注销),因此您使用的是默认/示例帐户,然后单击“与我共享”示例()。以返回的第一个DriveItem为例。使用remoteItem.ParentReference.DriveId和remoteItem.Id进行以下权限调用:
var item = await graphClient.Drives[driveId].Items[itemId].Request().Expand("Permissions").GetAsync();
foreach (var permission in item.Permissions)
{
    var roleNames = String.Join(", ", permission.Roles.ToArray());
    Console.WriteLine(roleNames);
}