【问题标题】:How to refresh tokens for gmail api programmatically?如何以编程方式刷新 gmail api 的令牌?
【发布时间】:2021-05-08 15:53:22
【问题描述】:

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

{
   access_token:
   refresh_token:
   scope:
   token_type:
   expiry_date:

 } 

令牌包含一个刷新令牌,因此我可以为我的测试重复使用相同的文件并且它可以工作。但大约 7/8 天后,测试失败,说明令牌已被撤销。

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

【问题讨论】:

    标签: gmail google-oauth cypress access-token


    【解决方案1】:

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

    我认为主要问题是为什么您的刷新令牌大部分都过期了但是刷新令牌不应该过期..

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

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

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

    【讨论】:

    • 好的,必须解释一下。该应用程序仍在测试中,因为它仅用于内部 e2e 测试,所以我从不费心去验证它。拥有一个未过期的刷新令牌以拥有一个经过验证的应用程序是唯一的方法吗?
    • 这不是我亲自测试过的,但最近有很多人和你有同样问题的人联系了我。我怀疑这是一个隐形的变化。不过,我无法从我的谷歌联系人中获取任何信息
    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 2018-07-23
    • 1970-01-01
    • 2016-08-28
    • 2014-07-15
    • 2015-02-20
    • 2019-09-30
    • 2013-04-19
    相关资源
    最近更新 更多