如何以编程方式刷新 gmail api 的令牌?

How to refresh tokens for gmail api programmatically?

我正在编写需要 运行 in CI 的赛普拉斯测试,其中一些测试需要检查 gmail。我关注 gmail api quickstart 并使用提供的程序生成保存到磁盘的令牌。令牌以这种格式保存:

{
   access_token:
   refresh_token:
   scope:
   token_type:
   expiry_date:

 } 

该令牌包含一个刷新令牌,因此我可以为我的测试重复使用同一个文件并且它有效。但是大约 7/8 天后测试失败,表示令牌已被撤销。

我想再次请求新令牌,但快速入门中提供的程序需要手动完成(提供一个 link 一个人访问,使用他们的 gmail 登录,获取代码他们粘贴回终端)。有没有办法以编程方式请求新令牌?

如果您的刷新令牌已过期,那么获取新令牌的唯一方法是通过向他们显示同意屏幕来请求您尝试访问其数据的用户的访问权限。

我认为主要问题是为什么您的刷新令牌在大多数情况下会过期但是刷新令牌不应过期..

生产中且已通过 Google 验证流程的应用的刷新令牌不会过期

由仍在测试中的应用程序创建的刷新令牌最多只能持续两周。

如果用户更改密码,这也会使使用 gmail 范围创建的刷新令牌过期