无法使用 Gmail 帐户和 java API 转移 google 驱动器 txt 文件的所有权

Can't transfer ownership of google drive txt files using gmail account and java API

我正在开发一个多用户 java 网络应用程序,它允许用户 list/share 他们的 google 在 gmail 帐户之间驱动文件。我利用 oauth2 授权代码流,用户访问我的应用程序时,被重定向到 gmail 进行登录,然后将“google 驱动器”范围的访问权限授予我的应用程序。然后我的应用程序使用用户访问令牌来调用 google 驱动器 APIs 使用他们的 java sdk.

我已经在源驱动器上上传了 MS word 文档和一个文本文件,我正在尝试使用我的应用程序将两者的所有权转移到我的另一个 gmail 帐户。我可以使用我的代码转移 .doc 文件的所有权,但它无法转移 .txt 文件。我尝试使用“TRY API”https://developers.google.com/drive/api/v3/reference/permissions/create 模拟此操作并看到相同的错误。

Error:
  "code": 400,
  "message": "Bad Request. User message: \"You can't change the owner of this item.\""
 Permission newOwnerPermission = new Permission();
 newOwnerPermission.setEmailAddress(newOwnerEmail);
 newOwnerPermission.setType("user");
 newOwnerPermission.setRole("owner"); 
 driveService.permissions().create(fileId,newOwnerPermission).setTransferOwnership(true).execute();

我可以让我的另一个 gmail 帐户成为 txt 文件的“作者”而不是“所有者”- 使用 java 代码或 google 的“尝试 api” . 我是否需要根据请求中的 mimeType 更改某些内容?我在文档中没有看到任何明显的内容

所有权的转移 - 无论是来自 UI 还是以编程方式,都只能在以下 conditions 下进行:

You can only transfer ownership of files and folders to someone in your organization.

And:

As an administrator, you can change a file's owner in Google Drive, but only among accounts managed by the same organization.

换句话说,用户本人和管理员都不能将文件的所有权转移到域外的不同 gmail 帐户。

您可以通过尝试从 UI 转移文件的所有权来轻松验证它 - 您将看到以下消息:

Sorry, ownership can only be transferred to another user in the same organisation as the current owner.

解决方法:

从不同域/消费者 gmail 帐户将文件所有权从用户 A 转移到用户 B 的唯一可行方法是:

  • 用户 A 将用户 B 设为编辑者
  • 用户 B 复制共享文件
  • 用户 B 将 suser A 设为副本的编辑者
  • 现在可以删除原文件
  • 实际上,所有权已通过创建原始文件的副本从用户 A 转移到用户 B。