Java Google Drive API:更改文件的所有权不工作(只有编写器/读取器工作)

Java Google Drive API:更改文件的所有权不工作(只有编写器/读取器工作),java,file-permissions,google-drive-api,google-api-java-client,Java,File Permissions,Google Drive Api,Google Api Java Client,我试图将一个文件更改为另一个用户,并使新用户成为文件的所有者,但这不起作用 首先,我做了一个权限插入,并将新用户添加为writer,这没有问题。但我没有直接将用户添加为“所有者”(返回内部500错误) 然后我尝试使用Permission:list,并将新用户视为编写器。已获取该用户的id,并尝试使用Permisson Update,并将“transferOwnership”用于新用户。 但这也不起作用,我总是得到500个内部服务器错误 这可能是新用户不属于我作为所有者所属的同一电子邮件域的任何内

我试图将一个文件更改为另一个用户,并使新用户成为文件的所有者,但这不起作用

首先,我做了一个权限插入,并将新用户添加为writer,这没有问题。但我没有直接将用户添加为“所有者”(返回内部500错误)

然后我尝试使用Permission:list,并将新用户视为编写器。已获取该用户的id,并尝试使用Permisson Update,并将“transferOwnership”用于新用户。 但这也不起作用,我总是得到500个内部服务器错误

这可能是新用户不属于我作为所有者所属的同一电子邮件域的任何内容吗? 如果这是原因,是否还有其他理由将所有权更改为外部域

Content-Type:  application/json
Authorization:  Bearer ya29.AHES6ZRkl82BYjpu
X-JavaScript-User-Agent:  Google APIs Explorer

{
"role": "owner",
"type": "user",
"value": "newuser@officedomain.com"
}
这会产生一个错误:

500 Internal Server Error

- Show headers -

{
"error": {
"errors": [
{
"domain": "global",
"reason": "internalError",
"message": "Internal Error"
}
],
"code": 500,
"message": "Internal Error"
}
}
编辑: 发现当两个用户拥有相同的电子邮件域时,可以更改所有权。但现在是另一个问题。 当所有权转移到另一个使用的文件时,该文件不会显示在“共享文件”中,这听起来很正确,但它也不会显示在目录结构中。
如果我选择“显示所有文件”,它是可见的,如果我指定文件名,它可以搜索。但是它不应该也在根目录下的“我的驱动器”中吗?

您无法为来自另一个域的用户添加
所有者
权限。您只能为来自当前文件所有者所属的同一域的用户添加
owner
权限

我想我们可以用下面的算法来解决这个问题:

  • 为来自destination-domain.com的用户向源文件添加
    writer
    权限。(请求发送至source domain.com)
  • 现在你可以复制这个文件了。(请求发送到目标域.com)
  • 复制所需的权限、注释和任何其他属性

我知道,这不是最简单的解决方案,但它很有效

您无法为来自其他域的用户添加
所有者
权限。您只能为来自当前文件所有者所属的同一域的用户添加
owner
权限

我想我们可以用下面的算法来解决这个问题:

  • 为来自destination-domain.com的用户向源文件添加
    writer
    权限。(请求发送至source domain.com)
  • 现在你可以复制这个文件了。(请求发送到目标域.com)
  • 复制所需的权限、注释和任何其他属性

我知道,这不是最简单的解决方案,但它很有效

如果我理解你的意思是正确的,通过将文件共享给新用户,然后新用户将文件复制到自己的驱动器,他将是文件的所有者?问题是,这或多或少应该是自动化的,然后还需要登录到其他帐户。确切地说,newuser将是复制文件的所有者。您可以使用OAuth2()对请求进行授权。另请参阅本页:-它显示了如何为日历API配置两条腿的OAuth2。驱动器API看起来很相似。好的,谢谢你的帮助。但在这种情况下,这将不起作用,因为这是一个自动工具,用户直到文件被移动之后才参与其中。并且服务器无法对所有用户进行身份验证。我创建了两个具有相同域的演示用户,并且可以将“所有权”发送给新用户。然后删除旧用户(旧所有者)的权限。但是当登录到新用户时,文件在任何地方都找不到。但是可以搜索文件,然后找到它。听起来像是谷歌硬盘中的一个bug。这个算法也可以自动化。我已经实现了。我能够在不同域的用户之间移动文件。这是一个很好的解决方法,只要您同时拥有两个oauth令牌,就可以正常工作。谢谢如果我理解你的意思是正确的,通过将文件共享给新用户,然后新用户将文件复制到自己的驱动器,他将是文件的所有者?问题是,这或多或少应该是自动化的,然后还需要登录到其他帐户。确切地说,newuser将是复制文件的所有者。您可以使用OAuth2()对请求进行授权。另请参阅本页:-它显示了如何为日历API配置两条腿的OAuth2。驱动器API看起来很相似。好的,谢谢你的帮助。但在这种情况下,这将不起作用,因为这是一个自动工具,用户直到文件被移动之后才参与其中。并且服务器无法对所有用户进行身份验证。我创建了两个具有相同域的演示用户,并且可以将“所有权”发送给新用户。然后删除旧用户(旧所有者)的权限。但是当登录到新用户时,文件在任何地方都找不到。但是可以搜索文件,然后找到它。听起来像是谷歌硬盘中的一个bug。这个算法也可以自动化。我已经实现了。我能够在不同域的用户之间移动文件。这是一个很好的解决方法,只要您同时拥有两个oauth令牌,就可以正常工作。谢谢