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

如何为桌面应用获取Google Drive API访问权限,解决授权过期问题

Google Drive API 非网页应用长期授权方案

你遇到的短期授权过期问题和应用是否完成官方验证无关,核心原因是默认授权流程没有申请离线访问权限,只能拿到有效期几小时的短期访问令牌,没有可用于自动续期的刷新令牌。以下是可直接落地的解决方案:

1. 调整Google Cloud控制台配置

  • 进入你的项目对应的OAuth同意屏幕配置页,将应用发布状态设置为测试,无需提交官方验证
  • 在「测试用户」列表中添加你自己的Google账号,测试状态下该账号的授权不受7天过期限制(未添加到测试列表的外部用户授权才会7天过期)

2. 修改PyDrive2授权代码,申请离线权限

在初始化授权时加入access_type=offline参数,要求Google返回长期有效的刷新令牌,参考代码如下:

from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

gauth = GoogleAuth()
# 配置离线访问权限,强制返回刷新令牌
gauth.GetFlow()
gauth.flow.params["access_type"] = "offline"
gauth.flow.params["approval_prompt"] = "force"

# 凭证读写逻辑,适配无交互运行场景
gauth.LoadCredentialsFile("gdrive_credentials.json")
if gauth.credentials is None:
    # 首次运行需要在有图形环境的终端执行,唤起浏览器完成授权
    gauth.LocalWebserverAuth()
elif gauth.access_token_expired:
    # 自动刷新过期的访问令牌,无需人工操作
    gauth.Refresh()
else:
    gauth.Authorize()
# 保存最新的凭证到本地
gauth.SaveCredentialsFile("gdrive_credentials.json")

drive = GoogleDrive(gauth)

3. 适配cron定时运行

  • 首次在有桌面环境的Linux终端执行一次脚本,完成授权后会在本地生成gdrive_credentials.json凭证文件
  • 后续配置cron任务时,确保脚本运行的工作目录能读取到该凭证文件即可,无需再进行人工授权,访问令牌过期会自动刷新

注意事项

  • 测试状态的应用最多支持添加100个测试用户,个人自用完全足够,不需要填写应用主页、提交官方验证
  • gdrive_credentials.json包含你的Google Drive完整访问权限,不要上传到公开代码仓库或泄露给其他人
  • 如果刷新令牌失效(比如你主动在Google账号安全设置里撤销了应用授权),只需要删除旧的凭证文件重新执行一次授权流程即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:57:04