Google drive api 更改目标为parentId的文件的所有权,该文件也会在根目录中结束(文件中有两个父目录)

Google drive api 更改目标为parentId的文件的所有权,该文件也会在根目录中结束(文件中有两个父目录),google-drive-api,Google Drive Api,我已经做了一种方法,将域内的文件所有权从管理员用户转移到destinationUser。这是可行的,当权限更改时,父对象被添加到文件中时,我会遇到问题 管理员用户按以下顺序执行序列: uploadFile-到destinationUser文件夹(共享给管理员写入) 插入权限(以用户身份授予destinationUser并拥有文件所有权)(请参见下面的代码) 删除管理员用户的权限(这仅使destinationUser成为文件的唯一所有者) 问题在步骤2中: 当权限被授予destinationUse

我已经做了一种方法,将域内的文件所有权从管理员用户转移到destinationUser。这是可行的,当权限更改时,父对象被添加到文件中时,我会遇到问题

管理员用户按以下顺序执行序列:

  • uploadFile-到destinationUser文件夹(共享给管理员写入)

  • 插入权限(以用户身份授予destinationUser并拥有文件所有权)(请参见下面的代码)

  • 删除管理员用户的权限(这仅使destinationUser成为文件的唯一所有者)

  • 问题在步骤2中:

    当权限被授予destinationUser时,文件的父级将被更改。 现在有两个父文件夹,一个是目标文件夹,但现在也在根目录中(isRoot=true)。问题是我没有要求它在根目录下,我认为这实际上是一个bug

    即使我在步骤2之后添加了一个额外的步骤来更新父级以删除“根”父级,这也不会显示在文件中。我猜由于管理员现在不是文件的所有者

    有什么原因可以解决这个问题,因为文件不应该同时位于文件夹和根目录中。其他序列,或者可能在Google Drive API上提交错误报告

                var service = new DriveService(CreateAuthenticator());
                var newPermission = new Permission();
                newPermission.Value = user.email;
                newPermission.Type = "user";
                newPermission.Role = "owner";
                try
                {
                    return service.Permissions.Insert(newPermission, fileId).Fetch();
                }
                catch (Exception e).....
    

    解决方案是使用域范围的方法,而不是删除此项。因为我找不到其他解决办法

    此外,域范围的解决方案在最终起作用时更干净