【问题标题】:'Token has been expired or revoked' - Google OAuth2 Refresh token gets expired in a few days“令牌已过期或撤销” - Google OAuth2 刷新令牌在几天后过期
【发布时间】:2021-05-09 12:00:31
【问题描述】:
我正在使用 Google Analytics API 来获取分析数据。我尝试使用以下步骤对其进行身份验证:
但是几天后,刷新令牌过期了,虽然提到刷新令牌的有效期是终生的。
【问题讨论】:
标签:
google-analytics
google-api
google-developers-console
google-developer-tools
oauth2-playground
【解决方案2】:
我需要使用 nodemailer 从我有权访问的 gmail 帐户发送邮件。它在我的刷新令牌被神秘地撤销之前工作了几天,即使该帐户属于我。谷歌搜索把我带到了这里,我已经观察了一段时间,希望有人能提供解决方案。
正如您所提到的,这似乎只发生在经过测试/未经验证的应用程序中,我猜谷歌会在几天后撤销您帐户中此类应用程序的令牌。经过多次尝试和错误,这就是我所做的。
注意:此解决方案仅适用于您拥有的帐户,否则您必须验证您的应用才能访问其他人的帐户
- 如SO post 中所述,生成一个新的刷新令牌(现有的很可能已被撤销)
- 转到您的 Google 帐户信息中心的 security tab
- 在最近的安全活动部分下,您应该会看到您的应用的安全警报。
- 点击通知旁边的上下文菜单,然后点击DISMISS
- 此时,您将看到一个选项对话框,您可以在其中指明您对该应用程序的信任程度。我只是继续说我信任开发人员/应用程序,显然。就是这样!刷新令牌应在此之后保留。
我在其他任何地方都找不到任何相关的东西。所以,如果它适合你,请接受这个答案。它可能会帮助其他人
【解决方案3】:
另一个答案为我指明了正确的方向,但对我来说,该选项位于其他地方:安全 > 发现安全检查/安全问题 > 应用旁边的上下文菜单 > 关闭
【解决方案4】:
这个问题似乎是针对未经验证的应用程序,只需从您的项目中删除令牌文件并重新运行项目,它将创建一个新令牌。
【解决方案5】:
解决方案是删除您的token.json 文件以强制 Google 查找新令牌。
我能够在没有经过验证的应用程序的情况下让它工作。验证我的应用程序后,refresh() 方法可能会起作用。不确定那个。
【解决方案6】:
我的问题是我添加了access_token 而不是refresh_token。