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

Python中从oauth2client迁移到google-auth获取Google ADC访问令牌

替换oauth2client获取用户ADC访问令牌的正确方式

要替代已废弃的oauth2client,使用google-auth库获取用户通过gcloud auth application-default login生成的应用默认凭据(ADC)访问令牌,你需要注意几个核心要点:

  • google.auth.default()返回的是凭据对象和项目ID的元组,需正确解构
  • 用户凭据必须指定权限范围(scopes),否则可能无法获取有效令牌
  • 要主动检查凭据有效性并刷新,避免令牌过期或未初始化

完整代码示例

from google.auth import default
from google.auth.transport.requests import Request

# 根据你的实际API权限需求调整范围
SCOPES = ['https://www.googleapis.com/auth/cloud-platform']

# 获取默认凭据与关联的项目ID
credentials, project_id = default(scopes=SCOPES)

# 刷新凭据(如果令牌无效、过期或未生成)
if not credentials.valid:
    credentials.refresh(Request())

# 获取可用的访问令牌
access_token = credentials.token

关键说明

  1. 解构返回值:default()方法会返回两个值,必须同时接收凭据和项目ID(即使你不需要项目ID),否则会触发类型错误。
  2. 指定Scopes:用户登录时需明确权限范围,否则生成的ADC可能没有足够权限访问目标服务,这一步是必须项。
  3. 凭据刷新:用户凭据的访问令牌不会永久有效,通过credentials.valid检查状态,无效时调用refresh(Request())重新获取令牌,逻辑和服务账号的用法一致。

与旧代码的对应关系

  • 旧代码中GoogleCredentials.get_application_default() → 新代码default(scopes=SCOPES)
  • 旧代码中credentials.get_access_token().access_token → 新代码中先刷新凭据,再取credentials.token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:35:07