Google drive api 谷歌驱动器api权限。删除不';行不通

Google drive api 谷歌驱动器api权限。删除不';行不通,google-drive-api,Google Drive Api,我是谷歌硬盘的所有者,我可以用下面的代码打开“可共享链接”,但当我想将其设置为私有时(基本上关闭可共享链接) 然后发生异常: 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[ - ] Reaso

我是谷歌硬盘的所有者,我可以用下面的代码打开“可共享链接”,但当我想将其设置为私有时(基本上关闭可共享链接) 然后发生异常:

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();
这是我的代码(不工作):

我认为permissionId可能是一个问题,所以我尝试了不同的方法来获得它,但是,没有一种有效(例外-关于所有者)。就像这条线一样-


有没有关于如何将文件设置回private的想法?谢谢你的帮助。

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


您试图删除的
permissionId
是主要所有权权限,而不是您先前创建的共享权限。要获取第二个permissionId,请在创建它时保存它(它在响应中),或者
获取文件的元数据并查看
permissionId[]

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


您试图删除的
permissionId
是主要所有权权限,而不是您先前创建的共享权限。要获取第二个permissionId,请在创建它时保存它(它在响应中),或者
获取文件的元数据并查看
permissionId[]

谢谢您的响应,现在就有意义了。我通过使用发现了一个简单的修复方法,您可以在fields=*中请求有关文件的所有信息,然后我看到PermissionID有两个值——第一个值为“anyoneWithLink”,第二个值为long number。我一直在使用第二个号码,但是,正如你所说的(号码所有者)是错误的。所以我把“permissionId”换成了“anyoneWithLink”,它成功了!谢谢你指出这一点。谢谢你的回答,现在有道理了。我通过使用发现了一个简单的修复方法,您可以在fields=*中请求有关文件的所有信息,然后我看到PermissionID有两个值——第一个值为“anyoneWithLink”,第二个值为long number。我一直在使用第二个号码,但是,正如你所说的(号码所有者)是错误的。所以我把“permissionId”换成了“anyoneWithLink”,它成功了!谢谢你指出这一点。
        //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();