Google API未验证应用无限期令牌创建及令牌失效问题求助
问题解答
1. 解决令牌失效问题
- 直接用服务账号替换OAuth用户令牌:服务账号的密钥不会过期(除非主动吊销),完全适合无人值守的定时脚本。操作步骤:在Google Cloud控制台创建服务账号,下载JSON密钥文件,脚本里加载这个密钥,再把服务账号的邮箱添加到目标Google表格的共享列表里就行。
- 确保令牌自动刷新逻辑正常:要是非得用OAuth用户令牌,得保证脚本里的Google客户端库(比如Python的
google-auth-library)能自动刷新过期令牌。另外要注意令牌存储的目录(比如~/.credentials/)得给脚本运行用户开读写权限,不然刷新后的令牌存不下来,每次运行都用旧的自然会失效。 - 检查权限配置:树莓派上跑脚本的用户必须能读写令牌存储文件,不然就算库能刷新,新令牌存不住也白搭。
2. 应用验证流程
这里说的是Google Cloud应用的OAuth验证,步骤如下:
- 先在Google Cloud控制台建项目,启用Google Sheets API。
- 配置OAuth同意屏幕:选内部或外部类型,填好应用名、联系邮箱,加上需要的权限范围(比如
https://www.googleapis.com/auth/spreadsheets)。 - 创建OAuth客户端ID:选桌面应用类型,下载客户端JSON文件到树莓派上。
- 提交验证请求(外部应用才需要):如果你的应用用了敏感权限,或者用户数超过100,就得提交验证。要填应用详情、录个演示功能的视频、提供隐私政策链接,等Google审核通过后,就能解除令牌有效期短的限制,避免频繁失效。
3. 替代方案
- 用Google Sheets的CSV导出/导入:如果不需要实时操作,把表格设为公开共享,生成CSV链接,用
curl或wget下载数据,处理完之后再通过表单或者邮件(如果允许的话)提交更新,完全不用API令牌。 - 用封装好的第三方库:比如
gspread的服务账号模式,本质还是靠Google API,但封装得更简单,不用自己写太多授权逻辑;或者用pandas结合服务账号密钥直接读写表格。 - 改用本地存储+手动同步:数据量不大的话,直接在树莓派本地存数据,定期手动或者写个简单脚本同步到Google Sheets,减少对API的依赖。
内容的提问来源于stack exchange,提问作者Eliot
相关产品推荐
相关产品推荐

