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

Go转Python集成Google API遇403未授权错误求助

嘿,从Go转Python时踩这个403未授权的坑太常见了,我帮你梳理几个必查的关键点,大概率能解决问题:

排查Google Admin Directory API 403错误的核心步骤

1. 务必给服务账号开启域范围委派

服务账号本身没法直接访问Google Workspace的Admin API,必须开启域范围委派才能模拟域内用户操作:

  • 登录Google Cloud控制台,找到你的服务账号,进入「详细信息」页面
  • 点击「编辑」,勾选「启用G Suite域范围委派」,保存后会生成一个客户端ID
  • 接着登录Google Workspace Admin控制台,进入「安全」→「API控制」→「域范围委派」
  • 点击「添加新的」,输入刚才生成的客户端ID,再准确添加你用到的两个Scope:https://www.googleapis.com/auth/admin.directory.user.readonly和https://www.googleapis.com/auth/admin.directory.user,最后保存

2. 代码里必须模拟域内管理员账号

这是最容易漏掉的一步!服务账号需要模拟一个拥有Admin权限的域内用户(比如你的域管理员邮箱)才能发起请求。修正后的代码应该是这样:

from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = [
    'https://www.googleapis.com/auth/admin.directory.user.readonly',
    'https://www.googleapis.com/auth/admin.directory.user'
]
SERVICE_ACCOUNT_FILE = '你的服务账号密钥文件路径.json'
# 替换成你的域内管理员邮箱,比如 admin@your-domain.com
DELEGATED_ADMIN_EMAIL = 'admin@your-domain.com'

# 加载服务账号凭证
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
# 关键:创建带有委派用户的凭证
delegated_credentials = credentials.with_subject(DELEGATED_ADMIN_EMAIL)

# 构建Admin Directory服务
service = build('admin', 'directory_v1', credentials=delegated_credentials)

3. 确认委派的管理员账号权限足够

别光看服务账号,还要检查你用来模拟的管理员账号有没有对应的权限:

  • 登录Google Workspace Admin控制台,找到该管理员账号 → 进入「管理员角色和权限」
  • 确保账号被分配了「用户管理」相关的角色(比如超级管理员,或者自定义角色包含Admin Directory User的读写权限)

4. 核对Scope的一致性

虽然你代码里的Scope是对的,但要确认:

  • 域范围委派里添加的Scope和代码里的完全一致,不能有拼写错误或细微差异
  • 不要多添加或漏添加需要的Scope

5. 确认Admin Directory API已启用

最后检查Google Cloud控制台里是否启用了Admin Directory API:

  • 进入「API和服务」→「已启用的API和服务」
  • 搜索「Admin Directory API」,如果没启用就点击「启用」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:42