gpt4 book ai didi

oauth - 为什么带有 Gmail Nodejs Nodemailer 的 OAuth2 会产生 "Username and Password not accepted"错误

转载 作者:行者123 更新时间:2023-12-03 15:30:24 25 4
gpt4 key购买 nike

尝试使用 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 playground 创建 token ,https://developers.google.com/oauthplayground/
  • 它看起来可以使用 refreshToken 获取一个有效的 accessToken,(即它在屏幕上打印新的访问 token 。)在它尝试发送电子邮件之前没有错误。
  • 我添加了可选的 accessToken: 但得到了同样的错误。 (“不接受用户名和密码”)
  • 我不是 100% 确定“用户名”,文档说它需要一个“用户”电子邮件地址 - 我猜创建 token 的帐户的电子邮件,但不是 100% 清楚。我已经尝试了几件事,但都没有奏效。
  • 我搜索了 gmail 帐户上的选项,没有发现任何看起来有问题的地方。
  • 此外,当我使用 Java 执行此操作时,它需要 google userID 而不是电子邮件地址,不确定为什么这是使用电子邮件地址而 Java 使用的是 UserId。
  • 最佳答案

    nodemailer 因“撰写”范围而失败

    问题是“范围”

    它失败了:
    https://www.googleapis.com/auth/gmail.compose

    但如果我使用它就可以了
    https://mail.google.com/

    关于oauth - 为什么带有 Gmail Nodejs Nodemailer 的 OAuth2 会产生 "Username and Password not accepted"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26901445/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com