【发布时间】:2020-10-23 05:36:08
【问题描述】:
我使用服务账号上传了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 的role 帐户从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()
“错误请求。用户消息:“您还不能更改此项目的所有者。 (我们正在努力。)""
【问题讨论】:
-
我认为这种情况可能与this thread相同。在这个线程中,Permissions:create 方法当时无法与批处理请求一起使用。在这种情况下,出现了
currently under development之类的错误。但是最近,这必须能够使用。所以我相信你现在遇到的We're working on it.这样的问题会在以后的更新中得到解决。 -
您能分享一下您是如何上传文件的吗?您还尝试过将Permissions: update 与
transferOwnership一起使用吗? -
@Tanaike 他们一直在工作on it for the last 8 years。相反,有没有办法在
drive.files().create(...)方法中将不同的用户设置为所有者? -
@Kessy 我添加了上传到帖子。我已经使用
update,请阅读我的帖子。 -
您有没有机会尝试上传一个 doc 文件并进行传输?我不认为你可以传输 wav 文件。
标签: google-api google-drive-api google-apps