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

调用Google Directory API获取用户列表时遇403权限错误,求排查

解决Google Directory API 403 "Not Authorized to access this resource/api" 错误

我之前帮不少开发者排查过这个问题,结合你已经完成的配置,大概率是以下几个容易被忽略的步骤没做好:

  • 服务账号未启用域范围授权
    就算你在API Access Manager里允许了服务账号,还得给它开域范围委派权限,让它能代表域内用户访问Directory API。具体操作:

    1. 进入Google Admin Console → 安全 → API控制 → 域范围委派
    2. 添加你的服务账号的客户端ID(在Google Cloud控制台的服务账号详情页能找到)
    3. 输入对应Directory API的OAuth 2.0范围,比如只读用户列表就填https://www.googleapis.com/auth/admin.directory.user.readonly,如果要读写就用https://www.googleapis.com/auth/admin.directory.user
    4. 保存后等个几分钟让配置生效
  • 代码里没指定模拟的域管理员账号
    服务账号本身没有访问域内用户数据的权限,必须模拟一个拥有管理员权限的域账号(比如admin@yourdomain.com)。检查你的代码里有没有类似这样的设置:

    # Python示例:给凭据加上要模拟的管理员账号
    credentials = credentials.with_subject('admin@yourdomain.com')
    

    要是没加这一步,服务账号会以自身身份请求,肯定没权限访问。

  • 模拟用的管理员账号权限不够
    你用来模拟的账号得有对应的Directory API权限,比如“查看用户”或者“管理用户”的权限。去Google Admin Console的角色和权限里检查:找到这个管理员的角色,确保包含Admin Directory Users相关的权限(比如Users → Read权限)。

  • API范围配置不匹配
    确认域范围委派里加的范围和代码中请求的范围完全一致。比如代码里请求的是读写权限,但域范围委派只加了只读范围,就会触发403错误。

  • 验证令牌的权限范围
    你可以用jwt.io解码拿到的JWT令牌,看看scope字段里有没有包含你需要的Directory API范围。如果没有,要么是令牌请求时的范围不对,要么是域范围委派的配置还没生效。

要是以上都检查过还是有问题,可以试试重新创建服务账号并重新配置域范围委派,有时候缓存会导致配置不及时生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:26:46