为什么OAuth2与Gmail Node.js Nodemailer一起产生“不接受用户名和密码”错误

问题描述 投票:2回答:2

当尝试通过Gmail + Nodejs + Nodemailer发送电子邮件时,[OAuth2生成“不接受用户名和密码”错误

代码-Nodejs-Nodemailer和xoauth2

var nodemailer = require("nodemailer");

var generator = require('xoauth2').createXOAuth2Generator({
    user: "", // Your gmail address.

    clientId: "",
    clientSecret: "",
    refreshToken: "",
});



// listen for token updates
// you probably want to store these to a db
generator.on('token', function(token){
    console.log('New token for %s: %s', token.user, token.accessToken);
});


// login
var smtpTransport = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        xoauth2: generator
    }
});


var mailOptions = {
    to: "",
    subject: 'Hello ', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b>' // html body
};


smtpTransport.sendMail(mailOptions, function(error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log('Message sent: ' + info.response);
  }
  smtpTransport.close();
});

问题:

  • 我使用Google OAuth2游乐场创建令牌,https://developers.google.com/oauthplayground/

  • 它看起来似乎可以使用refreshToken来获取有效的accessToken,(即,它将新的访问令牌打印在屏幕上。)在尝试发送电子邮件之前没有错误。

  • 我添加了可选的accessToken :,但出现了相同的错误。 (“不接受用户名和密码”)

  • 我不是100%知道“用户名”,文档说它需要一个“用户”电子邮件地址-我猜是为令牌创建的帐户的电子邮件,但不是100%清除。我已经尝试了几件事,但都无济于事。

  • 我已经搜索了gmail帐户中的选项,没有发现任何看起来不对的地方。

  • <<
  • OAuth2在尝试通过Gmail + Nodejs + Nodemailer代码发送电子邮件时-生成“用户名和密码未接受”错误-Nodejs-Nodemailer和xoauth2 var nodemailer = require(“ nodemailer”); ...
oauth oauth-2.0 gmail google-apps nodemailer
2个回答
7
投票
问题是“范围”

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.