【发布时间】:2015-02-22 02:18:18
【问题描述】:
我设置了一个服务帐户来复制用户上传的文件。如何将所有权转移到其他电子邮件地址?
我有:
new_permission = {'value': 'me@example.com', 'type': 'user', 'role': 'owner', 'transferOwnership': True} # also tried "true" and "True"
r = service.permissions().update(fileId=id, permissionId=perm_id, body=new_permission).execute()
不会发生所有权转移,所有者仍然是我的服务帐号。
编辑:也没有发生错误;它只是不会改变所有者。
编辑#2:我也试过通过https://developers.google.com/drive/v2/reference/permissions/update 没有运气。我收到 200 响应,但所有者仍然是我的服务帐户,而不是“me@example.com”:
{
"kind": "drive#permission",
"etag": "\"xxxxxxx/xxxxxxx-x\"",
"id": "xxxxxxxxxxx",
"selfLink": "https://www.googleapis.com/drive/v2/files/myfileid/permissions/xxxxxx",
"name": "myserviceaccount",
"emailAddress": "myserviceaccount@developer.gserviceaccount.com",
"domain": "developer.gserviceaccount.com",
"role": "owner",
"type": "user"
}
编辑#3: 我也尝试过“patch”方法...我得到与“update”方法相同的结果。
【问题讨论】:
-
看起来您使用“transferOwnership”作为正文的一部分,而不是文档中提到的 url 参数的一部分:h ttps://www.googleapis.com/drive/v2 /files/{fileId}/permissions/{permissionId}?transferOwnership=true
-
transferOwnership 在“new_permission”字典中,所有其他查询参数都在其中。另外,我试过“试试看!” developers.google.com/drive/v2/reference/permissions/update 的部分发生了同样的问题......所以他们也一定做错了吗?
-
当然不是,一定是你在这两个地方都做错了......如果url参数没问题,那么我猜你使用了你自己用户的权限ID和不是您要向其转让所有权的人的权限 ID。
-
@Gerardo:我使用的权限 ID 来自我的服务帐户。当我尝试使用“me@example.com”的权限 ID 时,我得到一个“403 Forbidden (Insufficient permissions for this file)”。 (我从developers.google.com/drive/v2/reference/permissions/获得了权限ID)