Google Drive API:更改文件的所有权不起作用(只有作家/读者有效)
Posted
技术标签:
【中文标题】Google Drive API:更改文件的所有权不起作用(只有作家/读者有效)【英文标题】:Google Drive API: Change ownership on file not working (only writer/reader works) 【发布时间】:2013-03-30 22:41:54 【问题描述】:我正在尝试将文件更改为另一个用户并使新用户成为文件的所有者,但这不起作用。
我首先做了一个权限插入并将新用户添加为作者,这没问题。但我没有直接将用户添加为“所有者”(返回内部 500 错误)
然后我尝试使用 Permission: 列表并将 newuser 视为作家。得到该用户的 id 并尝试使用 Permisson Update,并使用“transferOwnership”给新用户。 但这也不起作用,我总是收到 500 Internal Server 错误。
这可能是新用户不属于我作为所有者所属的同一个电子邮件域的任何东西吗? 如果是这个原因,是否还有其他原因将所有权更改为外部域?
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】:您无法为其他域的用户添加owner
权限。您只能为当前文件所有者所属域的用户添加owner
权限。
我认为我们可以使用以下算法解决它:
为来自destination-domain.com 的用户添加writer
对源文件的权限。 Permissions: insert。 (请求 source-domain.com)
现在您可以复制此文件。 Files: copy。 (请求destination-domain.com)。
复制权限、cmets 和您想要的任何其他属性。
我知道,这不是最简单的解决方案,但它确实有效。
【讨论】:
如果我理解正确,通过将文件共享给新用户,然后新用户将文件复制到自己的云端硬盘,他将成为文件的所有者吗?问题是这应该或多或少自动化,然后这也需要登录到其他帐户。 没错,newuser 将是复制文件的所有者。您可以使用 OAuth2 (code.google.com/p/google-api-java-client/wiki/OAuth2) 授权请求。另请参阅此页面:googleappsdeveloper.blogspot.ch/2011/12/… - 它显示了如何为日历 API 配置 2 腿 OAuth2。 Drive API 看起来很相似。 好的,感谢您的帮助。但这在这种情况下不起作用,因为这是一个自动化工具,直到文件已经移动后,用户才会参与其中。并且服务器无法对所有用户进行身份验证。我创建了 2 个具有相同域的演示用户,并且可以将“所有权”发送给新用户。然后删除了老用户(老所有者)的权限。但是当登录到新用户时,该文件在任何地方都找不到。但是可以搜索该文件,然后它就出现了。听起来像是 Google 云端硬盘中的错误。 这个算法也可以自动化。我已经实现了。我可以在不同域的用户之间移动文件。 很好的解决方法,只要您拥有两个 oauth 令牌就可以正常工作。谢谢!以上是关于Google Drive API:更改文件的所有权不起作用(只有作家/读者有效)的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 Google Drive API 上列出文件的所有字段?
Android Google DRIVE API V3 - 查询文件夹不返回所有文件夹
如何将 Google Drive 推送通知响应链接到更改的文件