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

在Google Cloud Shell中运行Python OAuth flow时run_console方法不存在

解决Google Cloud Shell中OAuth flow的run_console方法不存在问题

原因分析

run_console()方法在新版google-auth-oauthlib库中已被废弃,部分旧文档未同步更新,导致代码与当前库版本不兼容。

解决步骤

1. 替换废弃方法

将代码中的flow.run_console()替换为官方推荐的flow.run_local_server(),这是当前版本支持的交互式授权方法。修改后的示例代码:

from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']

flow = InstalledAppFlow.from_client_secrets_file(
    'credentials.json', SCOPES)
credentials = flow.run_local_server(port=0)

2. 升级相关依赖库

若替换方法后仍报错,检查并升级google-auth-oauthlib至最新版本:

# 查看当前版本
pip show google-auth-oauthlib

# 执行升级
pip install --upgrade google-auth-oauthlib

3. 适配Cloud Shell环境

在Google Cloud Shell中执行run_local_server()时,系统会输出一个授权链接。复制该链接到浏览器中完成授权,再将页面返回的授权码粘贴回Shell终端,即可完成凭证获取流程。

替代手动授权方案(环境受限场景)

如果无法使用本地服务器授权,可手动构建授权流程:

  • 调用flow.authorization_url()生成授权链接和状态值
  • 在浏览器打开链接完成授权,复制授权码
  • 调用flow.fetch_token()传入授权码获取凭证

示例代码:

from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']

flow = InstalledAppFlow.from_client_secrets_file(
    'credentials.json', SCOPES)

# 生成授权链接
authorization_url, state = flow.authorization_url(
    access_type='offline',
    include_granted_scopes='true')

print('请访问以下链接完成授权:', authorization_url)
auth_code = input('输入页面返回的授权码: ')

# 获取凭证
credentials = flow.fetch_token(code=auth_code)

内容的提问来源于stack exchange,提问作者Elad Ben-David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:52:15