我正在使用带有xoauth2的nodemailer成功通过Gmail发送电子邮件,但是到了获取新访问令牌的时候,我会收到 [Error: unauthorized_client] .
我的代码:
var express = require('express');
var nodemailer = require("nodemailer");
var xoauth2 = require('xoauth2');
app = express();
var generator = xoauth2.createXOAuth2Generator({
user: {userEmail},
clientId: {clientId},
clientSecret: {clientSecret}
refreshToken: {refreshToken},
accessToken: {accessToken}
});
var smtpTransport = nodemailer.createTransport({
service: "gmail",
auth: {
xoauth2: generator
}
});
var mailOptions = {mailOptions}
app.get('/send',
function (req, res) {
generator.generateToken(function (err, token, access) {
console.log(err, token, access);
smtpTransport.sendMail(mailOptions, function (error, response) {
if (error) {
console.log(error);
res.sendStatus(404);
} else {
console.log(response);
res.sendStatus(200);
}
smtpTransport.close();
});
});
});
app.listen(5000);
我正在调用generateToken只是为了测试目的 . 但在正常使用中也没有响应 .
我在这里获得了Google Developers clientId和clientSecret,其中我还将https://developers.google.com/oauthplayground/添加到授权重定向URI . 之后我去了开发者游乐场(与重定向uri相同),我选择了带有范围mail.google.com的Gmail API,然后我交换了"Authorization code"以进行刷新和访问令牌,我检查了"Auto-refresh the token before it expires" . 超时完成后(3600秒)我无法使用xoauth2获取新的accessToken .
1 回答
可以标记为已关闭 . 我没有找到这个问题的原因 . 我刚刚在Google Developers Console中删除了该项目并创建了一个新项目 . 在新项目中,我遵循上面描述的相同步骤,并成功获得了访问令牌 .