【发布时间】:2021-04-09 15:09:39
【问题描述】:
我正在尝试使用 API v3(通过 python 客户端库“google-api-python-client”)创建一个共享驱动器(在谷歌驱动器中)。代码如下:
import uuid
from googleapiclient.discovery import build
drive_metadata = {'name': 'Test shared drive'}
request_id = str(uuid.uuid4())
drive = service.drives().create(
body=drive_metadata,
requestId=request_id,
fields='id'
).execute()
drive_id = drive.get('id')
print(f'Drive ID: {drive_id}')
但是出现错误:
googleapiclient.errors.HttpError:
https://www.googleapis.com/drive/v3/drives?requestId=905c4aae-0436-44e0-bb04-3728ee53342e&fields=id&alt=json 返回“用户对此文件没有足够的权限。”。详细信息:“用户对此文件没有足够的权限。”>
错误很直观,但我的问题是我需要授予 API 用户帐户的正确权限,因为:
- 此用户不是个人帐户,而是服务帐户,因为它在 API 中使用,该 API 应该为我的应用程序的每个客户创建一个共享驱动器。
- 我的公司使用 Google Workspace(用于企业),我的个人帐户有权创建共享云端硬盘(在本例中,我是 GCP 项目管理员)。但是 GCP 控制台不允许在公司域中创建服务帐户:
- Service Accounts 似乎只存在于项目范围内,因此,它不属于同一个公司域。也就是说,服务帐号属于“iam.gserviceaccount.com”,无权访问域的共享驱动程序。
因此,我有两个问题:
- 我可以使用服务帐户创建共享驱动器吗?
- 如果是,服务帐号应该拥有什么样的权限(可能是 GCP 角色)?
【问题讨论】:
-
您是否授予服务帐户对域的访问权限,您是否为服务帐户设置了模拟用户?
标签: google-cloud-platform google-drive-api google-workspace google-apps-marketplace google-drive-shared-drive