You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过管理员账号访问客户Google Workspace域下所有用户云端硬盘

Google Workspace用户Drive文件访问方案(基于2-legged OAuth/域范围委派)

一、能否用2-legged OAuth访问域内用户Drive文件?

可以,但需要明确:现在Google官方更标准的实现是服务账号+域范围委派(2-legged OAuth是早期的称呼,核心逻辑一致)。只要管理员为你的应用授予Drive API的对应权限,就能实现访问域内所有用户的Drive文件/文件夹。

二、核心配置流程

  • 创建Google Cloud项目并启用Drive API
  • 生成服务账号及对应的JSON密钥文件
  • 在Google Workspace管理控制台,为该服务账号配置域范围委派,添加Drive API的权限范围(比如https://www.googleapis.com/auth/drive.readonly用于迁移读取,或https://www.googleapis.com/auth/drive用于全操作)
  • 管理员在Workspace管理后台确认授权,完成权限绑定

三、模拟访问特定用户Drive的API调用方法

关键是生成令牌时指定subject参数(目标用户的邮箱),以此模拟用户身份发起请求:

获取用户Drive根目录信息

GET https://www.googleapis.com/drive/v3/files/root?fields=*
Authorization: Bearer {模拟用户生成的ACCESS_TOKEN}

查询指定文件夹下的文件

GET https://www.googleapis.com/drive/v3/files?q='{目标文件夹ID}'+in+parents&fields=files(id,name,mimeType)
Authorization: Bearer {模拟用户生成的ACCESS_TOKEN}

令牌生成示例(Python)

from google.oauth2 import service_account
import googleapiclient.discovery

# 配置参数
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
SERVICE_ACCOUNT_KEY_PATH = '你的服务账号密钥文件路径.json'
TARGET_USER_EMAIL = '目标用户@客户域名.com'

# 生成模拟用户身份的凭证
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_KEY_PATH, scopes=SCOPES)
delegated_creds = credentials.with_subject(TARGET_USER_EMAIL)

# 初始化Drive服务
drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=delegated_creds)

# 调用API示例:获取用户根目录信息
root_folder = drive_service.files().get(fileId='root').execute()
print(root_folder['name'], root_folder['id'])

四、注意事项

  • 遵循权限最小化:迁移仅需读取的话,优先用drive.readonly权限,避免过度授权
  • 必须确保服务账号已被Workspace管理员授予指定的API权限范围,否则会返回权限不足错误
  • subject参数必须是域内有效用户邮箱,不能使用外部邮箱

内容的提问来源于stack exchange,提问作者Gags

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:40:35