【发布时间】:2021-05-30 03:19:13
【问题描述】:
我一直在努力使用 nodemailer 为自动发送电子邮件的 node.js Web 应用程序设置 Oauth 通信。 (我不想使用 gmail 的不太安全的应用程序设置)。
我已采取措施从 oauth Playground 获取客户端 ID、机密和刷新令牌,并将网络应用设置为使用存储的刷新令牌在首次加载时请求新的访问令牌。
它能够发送电子邮件(大约 7 天),然后我在客户端收到错误无效状态代码 400,和/或在服务器端收到无效授权。
回到谷歌游乐场并获得另一个刷新令牌,然后在环境变量中更新它,再解决一周。但我想无限期地解决这个问题。
我读到了somewhere“为外部用户类型配置了 OAuth 同意屏幕且发布状态为“测试”的 Google Cloud Platform 项目发出了一个在 7 天后到期的刷新令牌” ...所以上周我将应用程序切换到“生产中”(在 console.cloud.google.com)并尝试通过谷歌验证它。本周,同样的问题再次出现,表明这不是正确的解决方案,或者尚未通过 Google 验证。
我不知道这是否正确完成,也不知道这是否是解决此过期/撤销刷新令牌或无效授权的真正解决方案。
我也遇到过这些解释:
用户已撤销您应用的访问权限。
刷新令牌已六个月未使用。
用户更改了密码,并且刷新令牌包含 Gmail 范围。
用户帐户已超过授予(实时)刷新令牌的最大数量。
如果客户端不是服务帐户,则客户端已达到每个帐户 50 个刷新令牌的限制。
(我在这一周内没有进行任何更改,所以...不知道为什么会更改)
问题是刷新令牌吗? 还是申请状态? 会是 dns/cname/cloudflare 服务器问题吗?
【问题讨论】:
-
在您的手机或电视上登录几乎任何 Google 设备服务(YouTube、YouTube TV 等)。请注意您必须如何在几天(可能是一周)后重新进行身份验证。您需要设计您的应用程序来处理重新身份验证。恕我直言,随着 Google 加强 OAuth 的安全性,长期刷新令牌的日子已经结束。
标签: oauth-2.0 firebase-authentication google-oauth nodemailer refresh-token