能否通过无头浏览器实现Google API OAuth2.0认证自动刷新?
Google Calendar API OAuth2授权每周过期解决方案
问题根本原因
- 你的Google Cloud项目中配置的OAuth应用当前处于测试模式,该模式下Google仅会颁发有效期为7天的刷新令牌(refresh token),到期后刷新令牌直接失效,即便你代码里写了刷新逻辑也无法继续使用,只能重新走浏览器授权流程。
最优解决方法(无需开发自动化验证流程)
你不需要做任何自动化授权的开发,只要修改OAuth应用配置就能一劳永逸解决问题,操作步骤如下:
- 进入Google Cloud控制台,打开你创建了Calendar API的对应项目
- 侧边栏找到「API和服务」-「OAuth同意屏幕」配置页
- 将应用的发布状态从「测试」调整为「正式发布」,无需提交官方审核,直接保存即可
- 删除你本地当前的
token.json文件,运行代码重新走一次浏览器授权流程,新生成的刷新令牌就不会再7天过期了
注意:调整为正式发布后,只要你不主动在谷歌账号设置里撤销该应用的授权,刷新令牌会长期有效,你现有代码里自带的
creds.refresh(Request())逻辑会自动刷新有效期更短的访问令牌(access token),全程不需要人工干预。
不推荐的自动化验证方案
如果你因为特殊原因无法修改应用状态,确实可以用浏览器自动化工具模拟授权流程,但该方案稳定性极低、安全风险高,仅做参考:
- 可以使用Selenium、Playwright等工具,模拟打开授权链接、输入谷歌账号密码、点击同意授权的全流程,每次令牌到期前自动运行脚本生成新的
token.json - 该方案的缺陷:谷歌登录有严格的风控策略,非常容易触发人机验证,自动化脚本几乎无法稳定绕过;同时需要明文存储你的谷歌账号密码,存在极高的账号被盗风险。
内容的提问来源于stack exchange,提问作者Daman
相关产品推荐
相关产品推荐

