如何配置带管理员同意的Google服务账号OAuth以实现域级代发邮件
Google Workspace 全域代发邮件OAuth方案
可以通过**服务账号+域范围委派(Domain-Wide Delegation)**实现管理员一次性授权,让服务账号获得整个Workspace的代发权限,无需逐一审批单个用户权限。具体操作如下:
核心配置流程
- 创建并配置服务账号
- 在Google Cloud控制台创建服务账号,生成并下载JSON格式的密钥文件
- 为该服务账号启用「域范围委派」,记录生成的客户端ID
- 完成域级授权
- 登录Google Workspace管理控制台,进入「安全」>「API控制」>「域范围委派」
- 添加刚才记录的服务账号客户端ID,同时填入所需的OAuth权限范围(比如
https://www.googleapis.com/auth/gmail.send) - 管理员提交后即完成全域授权,无需再逐个用户审批权限
关键注意事项
- 你声明的权限范围必须是Google Workspace支持域级委派的范围,Gmail发送权限(
gmail.send)属于支持范畴 - 授权时需一次性填入所有需要的权限范围,确保服务账号能覆盖所需操作
代码实现思路
通过服务账号密钥模拟域内用户身份发送邮件,示例逻辑:
from google.oauth2 import service_account from googleapiclient.discovery import build # 配置参数 SCOPES = ['https://www.googleapis.com/auth/gmail.send'] SERVICE_ACCOUNT_KEY_PATH = './service-account-key.json' TARGET_USER_EMAIL = 'user@your-domain.com' # 生成委派凭证 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY_PATH, scopes=SCOPES) delegated_creds = credentials.with_subject(TARGET_USER_EMAIL) # 初始化Gmail服务并发送邮件 gmail_service = build('gmail', 'v1', credentials=delegated_creds) # 此处添加邮件构造与发送的API调用逻辑
内容的提问来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

