Google Drive API:更改文件中的所有权不起作用(仅限编写者/读者)

时间:2013-04-08 18:15:17

标签: java file-permissions google-drive-api google-api-java-client

我正在尝试将文件更改为其他用户,使新用户成为文件的所有者,但这不起作用。

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

然后我尝试使用Permission:列表并将newuser视为writer。得到用户的id并尝试使用Permisson Update,并使用“transferOwnership”到newuser。 但这也不起作用,我总是得到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"
}
}

编辑: 当两个用户拥有相同的电子邮件域时,发现可以更改所有权。但现在到了另一个问题。 当所有权被移动到另一个使用时,文件不会显示在“共享文件”中对我来说是正确的,但它也没有显示在目录结构中。 如果我选择“显示所有文件”并且可以搜索我是否指定文件名,则可见。但它不应该也在根源的“我的驱动器”中吗?

1 个答案:

答案 0 :(得分:4)

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

我认为我们可以使用以下算法解决它:

  • 从destination-domain.com为用户的源文件添加writer权限。 Permissions: insert。 (请求source-domain.com)
  • 现在您可以复制此文件。 Files: copy。 (请求发送到destination-domain.com)。
  • 复制权限,评论和您想要的任何其他属性。

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