如何使用 Onedrive Graph API 删除用户对项目的权限?

How to remove permissions of a user on an item using Onedrive Graph API?

总结:

我正在尝试使用 Onedrive Graph API 删除用户对某个项目的权限,但我总是得到 403 Forbidden。我使用的是企业帐户,它在其他所有方面都运行良好;为用户添加权限、创建文件夹、上传文件等..

我正在关注此文档 https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/permission_delete?view=odsp-graph-online

我做错了什么?

提出请求:

方法:删除

Url: https://graph.microsoft.com/v1.0/me/drive/items/01CFGODSVE5ZR7NAHG3FGLXM3G2YXDNYPF/permissions/aTowIy5mfG1lbWJlcnNoaXB8bWFyaW9AZXVyb21pYi5mcg

授权:不记名 eyJ0e...

请求的响应:

{
    "error": {
        "code": "notAllowed",
        "message": "Operation not allowed",
        "innerError": {
            "request-id": "23fe15ec-9e3a-4c78-8a82-52be07db60d4",
            "date": "2019-04-19T11:10:20"
        }
    }
}

邮递员请求和响应: https://i.ibb.co/y8wcsh8/postman.png

C#代码:

public dynamic RemoveItemPermission(string itemId, string permissionId)
{
    string graphUrl = $"https://graph.microsoft.com/v1.0/me/drive/items/{itemId}/permissions/{permissionId}";
    HttpWebRequest request = WebRequest.CreateHttp(graphUrl);
    request.Headers.Add("Authorization", "Bearer " + AccessToken);
    request.Method = "DELETE";

    var response = request.GetResponse();
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
        return JsonConvert.DeserializeObject<dynamic>(reader.ReadToEnd());
    }
}

感谢卡洛斯提出非常详细的问题!根据您提供的内容,我们确实追踪了删除授予特定用户的直接访问权限的问题。我们禁用了有问题的代码,希望您的问题现在已得到解决。如果情况并非如此,请务必告诉我们。

根据 Microsoft 文档,您只能删除不能继承的权限。 只能删除非继承的共享权限。 inheritedFrom 属性 必须为 null

https://docs.microsoft.com/en-us/graph/api/permission-delete?view=graph-rest-1.0&tabs=http