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

Flask+Colab中Google OAuth问题:run_console错误及登录异常求助

Flask+Google OAuth在Colab中三类问题的解决方案

1. AttributeError: 'InstalledAppFlow' object has no attribute 'run_console'

  • 问题根源:run_console()是Google Auth旧版本中面向桌面应用的授权方法,新版本已移除,且Flask作为Web应用,完全不适用桌面应用的授权流程。
  • 解决办法:
    • 优先改用Web应用专属的AuthorizationCodeFlow流程(长期适配方案);
    • 若暂时不想调整代码结构,可降级库版本:pip install google-auth-oauthlib==0.4.6,但不推荐长期使用此方法。

2. 点击登录按钮不跳转Google登录页,终端输出链接

  • 问题根源:当前代码使用了桌面应用的授权逻辑(如run_console或run_local_server),且redirect_uri设置为urn:ietf:wg:oauth:2.0:oob(桌面应用离线回调标识),导致流程直接在终端输出链接而非前端跳转;另外Colab是远程环境,本地端口未暴露,Google无法正常回调。
  • 解决办法:
    1. 给Flask添加回调路由(如/callback),并在Google Cloud Console的OAuth客户端设置中,将redirect_uri配置为该路由的公网HTTPS地址(Colab需通过ngrok或内置端口转发工具暴露应用);
    2. 修改授权逻辑,生成Google授权URL后,在Flask登录路由中直接重定向至该URL,示例代码:
      from google_auth_oauthlib.flow import Flow
      from flask import redirect, session
      
      # 初始化Web应用类型的Flow
      flow = Flow.from_client_secrets_file(
          'client_secret.json',
          scopes=['https://www.googleapis.com/auth/drive.metadata.readonly'],
          redirect_uri='https://你的ngrok公网地址/callback'
      )
      
      @app.route('/login')
      def login():
          auth_url, state = flow.authorization_url(access_type='offline', prompt='consent')
          session['state'] = state  # 存储state防止CSRF攻击
          return redirect(auth_url)
      
    3. 在Colab中暴露Flask端口:先安装pyngrok(!pip install pyngrok),配置ngrok token后,启动端口转发(如转发5000端口),获取公网HTTPS地址。

3. Error 403: access_denied

  • 问题根源:
    • redirect_uri不匹配:代码中的回调地址与Google Cloud Console配置的地址不一致;
    • OAuth客户端类型错误:创建的是桌面应用类型的客户端ID,而非Web应用类型;
    • Colab应用未正确暴露:Google无法访问你的回调路由;
    • 若为偶发情况可能是用户主动拒绝权限,但反复出现则必然是配置问题。
  • 解决办法:
    1. 检查Google Cloud Console的OAuth 2.0客户端ID设置:
      • 确保客户端类型为Web应用,而非桌面应用或其他类型;
      • 添加正确的redirect_uri,格式如https://xxxx-xx-xx-xx-xx.ngrok-free.app/callback,必须使用HTTPS协议;
    2. 保证代码中的redirect_uri与控制台配置完全一致,包括协议、域名、路由路径的细节;
    3. 确认Colab的Flask应用已通过ngrok或Colab内置端口转发,成为公网可访问的HTTPS服务;
    4. 检查API权限:确保在Google Cloud Console中启用了Google Drive API,且请求的scope为合法权限范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:39:57