我创建了一个应用,每天向我发送几次关于我的日常任务的提醒。我正在使用 googleapis 和 nodemailer 来做到这一点(在 Heroku 上运行)。这是我的代码:
const oauth2Client = new OAuth2(
client_id,
client_secret,
"https://developers.google.com/oauthplayground" // Redirect URL
);
oauth2Client.setCredentials({
refresh_token
});
const getTransporter = async () => {
try {
const accessToken = await oauth2Client.getAccessToken();
return nodemailer.createTransport({
service: "gmail",
auth: {
type: "OAuth2",
user: "my_email_address@gmail.com",
clientId: cliend_id,
clientSecret: client_secret,
refreshToken: refresh_token,
accessToken: accessToken,
tls: {
rejectUnauthorized: false
}
}
});
const sendEmail = async () => {
try {
const transporter = await getTransporter();
await transporter.sendMail(... // I hope you got the point by now
} catch(err) {
console.log(...);
}
}
问题是它可以工作,但几天后它停止工作并出现错误: 'invalid_grant', error_description: '令牌已过期或撤销。'
P.S - 我的 Google 帐户中没有任何安全警报。
我不知道为什么。请帮忙。