如何使用 gmail api 使用 nodemailer smtp oauth2?收到错误 535:用户和通行证未被接受

How to work nodemailer smtp oauth2 with gmail api? Got error 535: user and pass not accepted

我在 google API 控制台仪表板上启用了 Gmail API。
我创建了凭证,选择 OAuth 客户端 ID、Web 应用程序和“https://developers.google.com/oauthplayground”作为授权重定向 uri。
我通过使用上面的凭据在 OAuth 2.0 操场上玩耍并为范围启用 https://mail.google.com/ 获得了刷新令牌。

const mailer = require('feathers-mailer');
const smtpTransport = require('nodemailer-smtp-transport');

app.use('/api/mailer', mailer(smtpTransport({
    service: 'gmail',
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: {
      type: 'OAuth2',
      user: app.get('gmail'),
      scope: 'https://mail.google.com/',
      clientId: app.get('gmail_secret').client_id,
      clientSecret: app.get('gmail_secret').client_secret,
      refreshToken: app.get('gmail_credentials').refresh_token
    }
  })));

我收到错误 535:不接受用户名和密码,包括 'command:auth plain' 以防万一。

我确信这些应用得到了正确的值,因为 我已经用精确值替换了应用程序获取,但它仍然给出相同的错误。
我还尝试了删除 'host'、'port'、'secure'、'requireTLS' 的 auth 对象。同样的错误。
我尝试了 auth: host: 'smtp.gmail.com', port:'465', secure: true。同样的错误。
在本地环境中,万一它有助于修复错误。

我该如何解决这个 535 错误?

Feathers-Mailer 包含 nodemailer 并自动执行 .createTransport。 SMTP 传输模块是错误的,不需要。 mailer({transport-object}) 成功了。