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

LangChain Google Drive Loader在Colab中OAuth本地认证失败求助

解决LangChain GoogleDriveLoader在Colab中的OAuth认证问题

问题核心在于**回调地址(redirect_uri)**的适配:Colab是云端运行环境,你本地浏览器访问的localhost:53439指向自己的电脑,而非Colab所在的云端服务器,Google授权完成后无法将回调码发送到Colab服务端,因此出现连接拒绝错误。

以下是两种可行的解决方法:

方法一:用端口转发工具(ngrok)实现回调

适合需要交互式OAuth授权的场景:

  • 安装pyngrok依赖
    !pip install pyngrok
    
  • 配置ngrok授权令牌(需自行注册ngrok账号获取)
    from pyngrok import ngrok, conf
    
    conf.get_default().auth_token = "你的ngrok授权令牌"
    
  • 修改GoogleDriveLoader的回调地址,启动端口转发
    from langchain.document_loaders import GoogleDriveLoader
    
    # 启动ngrok转发指定端口
    public_url = ngrok.connect(53439).public_url
    # 替换回调地址为ngrok提供的公网地址
    loader = GoogleDriveLoader(
        folder_id="1ABCD_hmqMW7U6H66J0LDM3Irl9999999",
        credentials_path="/content/sample_data/credentials.json",
        recursive=False,
        redirect_uri=f"{public_url}/"
    )
    
    docs = loader.load()
    
  • 运行代码后,复制生成的授权URL打开,授权完成后会自动跳转到ngrok公网地址,回调码将被正确传递到Colab,完成认证。

方法二:使用Google服务账号认证

无需交互式授权,适合批量或自动化加载场景:

  • 在Google Cloud控制台创建服务账号,下载JSON密钥文件并上传到Colab
  • 在Google Drive目标文件夹的共享设置中,添加服务账号邮箱,赋予查看权限
  • 修改代码使用服务账号凭证
    from langchain.document_loaders import GoogleDriveLoader
    from google.oauth2.service_account import Credentials
    
    creds = Credentials.from_service_account_file(
        "/content/sample_data/service_account.json",
        scopes=["https://www.googleapis.com/auth/drive.readonly"]
    )
    
    loader = GoogleDriveLoader(
        folder_id="1ABCD_hmqMW7U6H66J0LDM3Irl9999999",
        credentials=creds,
        recursive=False
    )
    
    docs = loader.load()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:12:49