问题描述
我正在编写需要在 CI 中运行的 Cypress 测试,其中一些测试需要检查 gmail。我遵循了 gmail api quickstart 并使用提供的程序生成了一个保存到磁盘的令牌。令牌以这种格式保存:
{
access_token:
refresh_token:
scope:
token_type:
expiry_date:
}
令牌包含一个刷新令牌,因此我可以在测试中重复使用相同的文件并且它可以工作。但大约 7/8 天后,测试失败,说令牌已被撤销。
我想再次请求新令牌,但快速入门中提供的程序需要手动完成(提供一个人访问的链接,使用他们的 Gmail 登录,获取他们粘贴回终端的代码)。有没有办法以编程方式请求新令牌?
解决方法
如果您的刷新令牌已过期,那么获取新令牌的唯一方法是通过向他们显示同意屏幕来请求访问您尝试访问其数据的用户。
我认为主要问题是为什么您的刷新令牌在大多数情况下会过期,但是刷新令牌不应该过期..
正在生产中并通过谷歌验证过程的应用程序的刷新令牌不会过期
由仍在测试中的应用程序创建的刷新令牌最多只能持续两周。
如果用户更改了他们的密码,这也会使使用 gmail 范围创建的刷新令牌过期