【问题标题】:Nodemailer no refresh token or refresh handler callback is set errorNodemailer 没有刷新令牌或刷新处理程序回调设置错误
【发布时间】:2021-12-15 14:47:28
【问题描述】:

在获得刷新令牌的第一天,电子邮件发送工作。但是它总是在几天后失败,当我在 OAuth 2.0 操场上重新生成新的刷新令牌时它会再次工作。

我已经在此处放入了从 OAuth 游乐场获得的刷新令牌!

const oAuth2Client = new google.auth.OAuth2(
  CLIENT_ID,
  CLIENT_SECRET,
  REDIRECT_URI
);

oAuth2Client.setCredentials({ refresh_token: REFRESH_TOKEN });

google.options({ auth: oAuth2Client }); // Apply the settings globally

【问题讨论】:

  • 欢迎加入堆栈,请编辑您的问题并包含您的代码而不是您的代码图像。与错误消息相同。不要发布图片。

标签: email oauth-2.0 oauth nodemailer


【解决方案1】:

首先,如果您使用默认凭据通过 OAuth 2.0 游乐场创建刷新令牌,则令牌最多只能持续几天 OAuth 2.0 游乐场仅用于测试它不应该是您应该依赖的东西上。

其次,如果您使用自己的客户端 ID 和客户端密码,则同样如此。 OAuth 2.0 游乐场。不应将其用于仅用于测试的应用程序,您应该修复您请求的代码或拥有刷新令牌和访问令牌。

也就是说,如果您的应用程序仍在测试刷新令牌仅持续 7 天,那么它们将被撤销。

您的应用程序应该能够处理到期的刷新令牌并请求新的用户。

【讨论】:

  • 这是否意味着下面列出的教程只允许临时发送电子邮件? newbedev.com/…
  • 该示例似乎使用了第二个选项。它告诉您如何创建客户端 ID 和密码,以便您创建自己的。但是,如果您的项目正在测试中,它们仍将持续最多一周。同样使用 Gmail api,如果用户更改密码,它也会撤销您的令牌。
  • 在将应用程序设置为生产模式后,我还需要处理刷新令牌过期吗?我对刷新令牌处理感到困惑,因为我不知道如何请求一个新令牌并用它调用 setCredentials。
  • 你应该,在某些情况下刷新令牌会过期,如果它过期,你应该总是提示用户再次授权。
猜你喜欢
  • 2021-11-07
  • 2014-08-01
  • 1970-01-01
  • 2014-06-15
  • 2022-07-15
  • 2020-03-23
  • 2016-01-05
  • 2018-10-21
  • 2022-10-31
相关资源
最近更新 更多