Google Drive API Permissions.Delete不起作用

时间:2019-03-23 00:17:02

标签: google-drive-api

我是我的Google驱动器的所有者,我可以使用下面的代码打开“共享链接”,但是当我要将其设置为私有时(基本上关闭了共享链接) 然后发生异常:

Google.GoogleApiException: 'Google.Apis.Requests.RequestError The owner of a file cannot be removed. [403] Errors [     Message[The owner of a file cannot be removed.] Location[ - ] Reason[cannotRemoveOwner] Domain[global] ]

我可以轻松设置文件权限:

        var permission = new Google.Apis.Drive.v3.Data.Permission();
        permission.Role = "reader";
        permission.Type = "anyone";
        var aaaa = Authentication.service.Permissions.Create(permission, fileIdAction).ExecuteAsync();

这是我的代码(无效):

        //Get PermissionId
        var get = Authentication.service.About.Get();
        get.Fields = "*";
        var permissionId = get.Execute().User.PermissionId;

        //Delete method
        Authentication.service.Permissions.Delete(fileIdAction, permissionId).Execute();

我认为PermissionId可能是一个问题,所以我尝试了不同的方法来获取它,但是,它们都不起作用(Exception-关于所有者)。就像在此线程中一样-How to get permissionId in Drive API v3?

关于如何将文件设置回私有的任何想法?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

答案在问题中。 “无法删除文件的所有者。”

您要删除的permissionId是主要所有权权限,而不是您先前创建的共享权限。要获取第二个PermissionId,可以在创建它时将其保存(在响应中),或者get文件的元数据并浏览permissionIds[]