[英]How to update permissions in Google Drive API v3?
我使用服務帳戶上傳了 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()
“錯誤請求。用戶消息:“您還不能更改此項目的所有者。 (我們正在努力。)""
根據此處找到的文檔,讓其他人成為您文件的所有者
從您的個人帳戶,您可以傳輸以下文件類型:
- 谷歌文檔
- 谷歌表格
- 谷歌幻燈片
- 谷歌 Forms
- 谷歌繪圖
- 谷歌我的地圖
- 文件夾提示:當您轉移文件夾的所有權時,它只轉移選定的文件夾,而不包括其中的文件。
如果 google drive 不支持傳輸該文件類型,則服務帳戶也無法傳輸它。
解決方法。 讓用戶將文件上傳到他們的帳戶而不是服務帳戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.