“令牌已过期或撤销” - Google OAuth2 刷新令牌将在几天内过期

问题描述

我正在使用谷歌分析 API 来获取分析数据。我尝试使用以下步骤对其进行身份验证: -> 在 https://console.developers.google.com/ 凭据部分创建了 OAuth 客户端 ID。 -> 在同意屏幕中,我已将发布状态设置为测试 -> 在 OAuth 2.0 Playground 中,我使用上面生成的客户端 ID 和客户端密码获得了刷新令牌 -> 然后我用它来通过它生成访问令牌。

但几天后刷新令牌似乎一次又一次过期,尽管提到刷新令牌有效期是终身的。

解决方法

我需要使用 nodemailer 从我有权访问的 gmail 帐户发送邮件。即使该帐户属于我,它也会在我的刷新令牌被神秘撤销之前工作几天。谷歌搜索把我带到了这里,我已经观察了一段时间,希望有人能提供解决方案的帮助。

正如您所提到的,这似乎只发生在测试/未经验证的应用程序中,我猜谷歌会在几天后撤销您帐户中此类应用程序的令牌。经过多次试验和错误,这就是我所做的。

注意:此解决方案仅适用于您拥有的帐户,否则您必须验证您的应用才能访问其他人的帐户

  1. 按照本SO post
  2. 中的描述生成一个新的刷新令牌(现有的很可能已被撤销)
  3. 转到您的 Google 帐户信息中心的 security tab
  4. 最近的安全活动部分下,您应该会看到针对您的应用的安全警报。
  5. 点击通知旁边的上下文菜单,然后点击DISMISS
  6. 此时,您会看到一个选项对话框,您可以在其中指明您对该应用的信任级别。我只是继续说我信任开发人员/应用程序,显然。就是这样!在此之后刷新令牌应保持不变。

我在其他任何地方都找不到任何相关内容。所以,如果它适合你,请接受这个答案。它可能会帮助其他人

,

另一个答案为我指明了正确的方向,但对我而言,该选项位于其他地方:安全 > 发现安全检查/安全问题 > 应用旁边的上下文菜单 > 关闭

,

如果您的应用处于测试模式,则用户令牌将在 7 天后过期。请在此处找到此说明:https://support.google.com/cloud/answer/10311615#zippy=%2Ctesting enter image description here

,

这个问题似乎是针对未经验证的应用程序,只需从您的项目中删除令牌文件并重新运行该项目,它就会创建一个新的令牌。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...