google 驱动器 api v3 (python) 更新文件权限 "role"
google drive api v3 (python) update file premissions "role"
我正在尝试在 python 3.7 中制作一个应用程序,列出驱动器帐户中的所有文件,并将 public 文件设置为私有。我正在使用 google 驱动器 api v3。为此,我需要将文件权限 "type" 更改为 "user",这确实有效,现在我首先尝试将文件权限 "role" 更改为 "owner",因为在public 个文件显示 "reader" 或 "writer"。
我尝试了很多东西,但都没有用。
这是代码(它是西班牙语,因为它是我的语言。不起作用的函数称为 "ActualizarPermisos")
def actualizarPermisos(service, file_id, permission_id):
try:
# First retrieve the permission from the API.
permission = service.permissions().get(
fileId=file_id, permissionId=permission_id).execute()
permission['role'] = 'writer'
return service.permissions().update(
fileId=file_id, permissionId=permission_id, body=permission, transferOwnership=False).execute()
except errors.HttpError as error:
print ('An error occurred: %s' % error)
return None
显示的错误是:"An error occurred: https://www.googleapis.com/drive/v3/files/0B4SorsEEhamLfmVuQUtFUXpMS25RT2k2SkpOTzFhclRubk1VM3ZDUkw5b3o0Zm5kRWpHWjQ/permissions/anyone?transferOwnership=false&alt=json returned "资源主体包含不可直接写入的字段。"> "
您的代码存在问题,您使用的是从 get 方法获得的权限主体,其中包含字段 id、kind 和 type。更新权限时不允许更改这些字段,只允许更改字段 expirationTime 和 role,您可以在此处查看 [1].
您可以像这样简单地创建权限 json:
permission = {'role': 'writer'}
并使用它代替您从 get 请求中获得的许可主体。我这样测试它并成功地将用户的权限从 reader 更新为 writer.
如果您需要更改的字段超过允许的字段,我建议您删除权限(首先获取所需数据)并为该文件创建一个新权限[2],在这里您可以检查允许的值对于每个字段 [3].
[1] https://developers.google.com/drive/api/v3/reference/permissions/update
[3] https://developers.google.com/drive/api/v3/reference/permissions
我正在尝试在 python 3.7 中制作一个应用程序,列出驱动器帐户中的所有文件,并将 public 文件设置为私有。我正在使用 google 驱动器 api v3。为此,我需要将文件权限 "type" 更改为 "user",这确实有效,现在我首先尝试将文件权限 "role" 更改为 "owner",因为在public 个文件显示 "reader" 或 "writer"。
我尝试了很多东西,但都没有用。
这是代码(它是西班牙语,因为它是我的语言。不起作用的函数称为 "ActualizarPermisos")
def actualizarPermisos(service, file_id, permission_id):
try:
# First retrieve the permission from the API.
permission = service.permissions().get(
fileId=file_id, permissionId=permission_id).execute()
permission['role'] = 'writer'
return service.permissions().update(
fileId=file_id, permissionId=permission_id, body=permission, transferOwnership=False).execute()
except errors.HttpError as error:
print ('An error occurred: %s' % error)
return None
显示的错误是:"An error occurred: https://www.googleapis.com/drive/v3/files/0B4SorsEEhamLfmVuQUtFUXpMS25RT2k2SkpOTzFhclRubk1VM3ZDUkw5b3o0Zm5kRWpHWjQ/permissions/anyone?transferOwnership=false&alt=json returned "资源主体包含不可直接写入的字段。"> "
您的代码存在问题,您使用的是从 get 方法获得的权限主体,其中包含字段 id、kind 和 type。更新权限时不允许更改这些字段,只允许更改字段 expirationTime 和 role,您可以在此处查看 [1].
您可以像这样简单地创建权限 json:
permission = {'role': 'writer'}
并使用它代替您从 get 请求中获得的许可主体。我这样测试它并成功地将用户的权限从 reader 更新为 writer.
如果您需要更改的字段超过允许的字段,我建议您删除权限(首先获取所需数据)并为该文件创建一个新权限[2],在这里您可以检查允许的值对于每个字段 [3].
[1] https://developers.google.com/drive/api/v3/reference/permissions/update
[3] https://developers.google.com/drive/api/v3/reference/permissions