簡體   English   中英

如何更新 Google Drive API v3 中的權限?

[英]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帳戶的rolewriter更改為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM