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

时间:2019-04-19 16:51:03

标签: c# onedrive

摘要:

我正在尝试使用Onedrive Graph API删除用户对某项的许可,但是我总是得到403 Forbidden。我使用的是企业帐户,其他帐户都可以正常使用;为用户添加权限,创建文件夹,上传文件等。

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

我在做什么错了?

发出的请求:

方法:删除

网址: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"
        }
    }
}

邮递员请求和回复: Postman Request & Response 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());
    }
}

2 个答案:

答案 0 :(得分:1)

感谢非常详细的问题卡洛斯!根据您提供的信息,我们确实找到了删除授予特定用户的直接访问权限的问题。我们停用了有问题的代码,因此希望您的问题现在已解决。绝对要告诉我们不是那样。

答案 1 :(得分:0)

根据Microsoft文档,您只能删除未继承的权限。 只能删除未继承的共享权限。 InheritedFrom属性必须为空

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