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

Man*_*yal 2 google-analytics google-api oauth2-playground google-developer-tools google-developers-console

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

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

小智 67

如果您的应用程序处于测试模式,则用户令牌将在 7 天后过期。请在此处找到此说明:https ://support.google.com/cloud/answer/10311615#zippy=%2Ctesting 在此输入图像描述

  • 访问 [OAuth 同意屏幕](https://console.cloud.google.com/apis/credentials/consent) 并单击发布按钮以从测试状态更改为已发布状态。 (18认同)
  • @alper IIRC,您不需要验证即可发布应用程序。如果您尚未验证应用程序不受信任,用户将收到警告。出于测试目的,这很好,但如果您要部署到生产环境,我认为没有办法绕过验证。 (3认同)
  • 只是想确认 Spikatrix 所说的内容,因为 Google Cloud Console 中的措辞非常具有误导性。尽管控制台中出现所有警告,您无需验证应用程序。我的实验表明,只要应用程序的“发布状态”显示“生产中”,令牌就不会在 7 天后过期。 (3认同)
  • 这是我的问题。谢谢! (2认同)

小智 7

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

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

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

  1. 生成一个新的刷新令牌(现有的一个很可能被撤销),如这篇SO 帖子中所述
  2. 转到您的 Google 帐户仪表板的安全选项卡
  3. 在“最近的安全活动”部分下,您应该会看到应用的安全警报。
  4. 单击通知旁边的上下文菜单,然后单击DISMISS
  5. 此时,您将看到一个选项对话框,您可以在其中指示您对该应用程序的信任级别。我只是继续说我信任开发人员/应用程序,显然。就是这样!刷新令牌应在此之后持续存在。

我在其他任何地方都找不到任何相关的东西。所以,如果它对你有用,请接受这个答案。它可能会帮助别人

  • 这是否应该防止新令牌在一周后过期?我上周驳回了安全通知,我的新令牌现在又过期了。希望我错过了一些东西。根据Google的[API验证例外](https://support.google.com/cloud/answer/9110914?hl=en#zippy=%2Cexceptions-to-verification-requirements),个人使用不需要验证,但没有详细说明如何表明该应用程序仅供个人使用而不是用于测试。 (2认同)
  • 这个解决方法对我不起作用。我找到安全活动菜单并关闭,但令牌在 7 天后仍然过期。 (2认同)
  • “您应该看到您的应用程序的安全警报”不。 (2认同)

小智 5

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