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

本地正常的Python代码在Docker中触发Google OAuth Invalid grant错误

解决Docker中gspread访问Google表格出现invalid_grant错误的方案

核心排查与修复步骤

1. 确认服务账号凭证配置无遗漏

  • 检查Docker镜像中是否正确复制了服务账号JSON凭证文件,确保代码中引用的路径和容器内文件路径完全匹配。比如Dockerfile需添加:
    COPY service_account.json /app/service_account.json
    
  • 验证Google Cloud控制台中,该服务账号的client_email已被添加到目标Google表格的共享列表,权限设置为可编辑或查看(根据需求)。

2. 同步Docker容器与主机时钟

若时钟偏移导致令牌验证失败,按主机系统处理:

  • Linux/macOS:运行容器时挂载主机时钟文件强制同步:
    docker run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro your-image-name
    
  • Windows:开启Docker Desktop的时间同步(设置→Resources→Advanced,勾选"Sync time with host"),或运行容器时指定时区:
    docker run -e TZ=Asia/Shanghai your-image-name
    
  • 验证容器时间:进入容器执行date命令,对比主机时间确认同步。

3. 更新依赖库版本

旧版本的gspread或oauth2client可能存在兼容性问题,在Dockerfile中指定更新版本:

RUN pip install gspread oauth2client --upgrade

4. 排查网络连通性

确保容器能正常访问Google OAuth2服务器,测试命令:

docker exec -it your-container-name ping accounts.google.com

若无法连通,检查主机防火墙、代理设置或Docker网络配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:32:04