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

OAuth2与GSuite SDK(Python):服务账号「无权以此方式获取访问令牌」错误求助

解决服务账号调用GSuite API时的「client is unauthorized to retrieve access tokens using this method」错误

我帮你排查下这个服务账号调用GSuite API的权限问题,这个错误通常是因为服务账号的授权配置没到位,咱们一步步来解决:

  • 启用域范围授权(Domain-Wide Delegation)
    这是GSuite API服务账号调用的核心配置,没有开启的话服务账号无法代表域内用户获取权限。操作步骤如下:

    1. 登录你的GSuite管理控制台,进入「安全」>「API控制」>「域范围授权」
    2. 点击「添加新的客户端ID」,填入服务账号的客户端ID(可在GCP控制台的服务账号详情页找到)
    3. 在「OAuth 2.0 范围」中添加你要调用的API对应的权限范围,比如调用Admin Directory API就填https://www.googleapis.com/auth/admin.directory.user.readonly,多个范围用逗号分隔
  • 修正代码中的服务账号认证逻辑
    你原来的代码可能用了普通OAuth2的认证流程,服务账号需要用专门的服务账号认证方式,并且必须指定要模拟的域内用户(因为服务账号本身没有GSuite域内的用户数据权限)。这里给你一个新版的示例代码:

    from google.oauth2 import service_account
    from googleapiclient.discovery import build
    
    # 替换成你需要的API权限范围
    SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly']
    # 替换成你的服务账号密钥文件路径
    SERVICE_ACCOUNT_FILE = '/path/to/your/service-account-key.json'
    # 替换成你要模拟的域内授权用户(比如拥有Admin权限的账号)
    DELEGATED_USER = 'admin@yourdomain.com'
    
    # 加载服务账号凭证
    credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    # 生成带有模拟用户的凭证
    delegated_credentials = credentials.with_subject(DELEGATED_USER)
    
    # 构建API服务实例
    service = build('admin', 'directory_v1', credentials=delegated_credentials)
    
    # 示例调用:获取域内用户列表
    results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
    users = results.get('users', [])
    if not users:
        print('No users found.')
    else:
        print('Users:')
        for user in users:
            print(f"{user['primaryEmail']} ({user['name']['fullName']})")
    
  • 确认目标API已在GCP控制台启用
    登录GCP控制台,进入「API和服务」>「已启用的API和服务」,搜索并确保你要调用的GSuite API(比如Admin Directory API、Drive API等)已经被启用,未启用的话点击「启用」按钮即可。

  • 检查服务账号的角色权限
    在GCP控制台的服务账号详情页,确认服务账号被赋予了必要的项目角色,比如调用Admin API可以赋予「Admin SDK Administrator」角色,但注意这只是项目层面的权限,核心还是域范围授权的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:45:54