Google api 如何在Google Drive API v3中更新权限?

Google api 如何在Google Drive API v3中更新权限?,google-api,google-drive-api,google-apps,Google Api,Google Drive Api,Google Apps,我使用服务帐户上传了wav文件,服务帐户创建了该文件,服务帐户是所有者: metadata = {'name': filename, 'parents': [FolderId]} media = MediaFileUpload(filepath, mimetype='audio/wav') r = drive.files().create(body=metadata, media_body=media, fields='id').execute() {'permissions': [{'del

我使用服务帐户上传了wav文件,服务帐户创建了该文件,服务帐户是所有者:

metadata = {'name': filename, 'parents': [FolderId]}
media = MediaFileUpload(filepath, mimetype='audio/wav')
r = drive.files().create(body=metadata, media_body=media, fields='id').execute()

{'permissions': [{'deleted': False,
              'displayName': 'My name',
              'emailAddress': 'myemail@gmail.com',
              'id': '00654354190098938408',
              'kind': 'drive#permission',
              'photoLink': 'https://lh6.googleusercontent.com/photo.jpg',
              'role': 'writer',
              'type': 'user'},
             {'deleted': False,
              'displayName': 'myservice@myservice.iam.gserviceaccount.com',
              'emailAddress': 'myservice@myservice.iam.gserviceaccount.com',
              'id': '16815597635264162472',
              'kind': 'drive#permission',
              'role': 'owner',
              'type': 'user'}]}
然后我尝试将
myemail
帐户的
角色
writer
更改为
owner
,并得到一个错误:

drive.permissions().update(fileId=fileId, permissionId='00654354190098938408', transferOwnership=True,
    body={'role': 'owner'}).execute()
用户对此文件没有足够的权限

怎么了

我的服务帐户是所有者,我可以通过服务帐户删除文件,但它没有转移所有权的权限,为什么? 当我使用
service
帐户创建电子表格并将所有权转移到
myemail
帐户时,它工作得非常好

我尝试创建新权限,但得到以下结果:

permission = {
    "emailAddress": 'myemail@gmail.com',
    "role": 'owner',
    "type": 'user',
}
drive.permissions().create(fileId=fileId, body=permission, transferOwnership=True).execute()
请求错误。用户消息:“您还不能更改此项目的所有者。(我们正在努力。)


根据这里的文件

从您的个人帐户,您可以传输以下文件类型:

  • 谷歌文档
  • 谷歌表单
  • 谷歌幻灯片
  • 谷歌表单
  • 谷歌绘图
  • 谷歌我的地图
  • 文件夹 提示:当您转移文件夹的所有权时,它只转移选定的文件夹,不包括其中的文件
如果google drive不支持传输该文件类型,则服务帐户也无法传输该文件


变通办法。让用户将文件上传到他们的帐户,而不是服务帐户。

我认为这种情况可能与其他用户相同。在该线程中,当时无法将Permissions:create方法用于批处理请求。在这种情况下,出现了当前正在开发的
之类的错误。但最近,这已经可以使用了。因此,我相信您当前的问题,如
我们正在解决它。
将在未来的更新中得到解决。您能分享一下您是如何上传该文件的吗?您是否也尝试过使用
transferOwnership
?@Tanaike他们一直在工作。相反,有没有办法在
drive.files().create(…)
method中设置不同的用户作为所有者?@Kessy我在帖子中添加了上传。我已经使用了
update
,请阅读我的帖子。您是否想尝试上传文档文件并传输?我认为你不能传输wav文件。