“UnhandledPromiseRejectionWarning:错误:未设置刷新令牌”尝试使用 gmail API 使用 digitalocean 部署节点应用程序时

问题描述

const express = require('express');
require("dotenv").config();
const app = express();
const nodemailer = require("nodemailer");
const { google } = require("googleapis");
const OAuth2 = google.auth.OAuth2;

let pass = process.env.PASSWORD;
const PORT = process.env.PORT || 5000;

新的刷新令牌在 .env 文件

const CLIENT_ID = process.env.CLIENTID;
const CLIENT_SECRET = process.env.SECRET;
const REDIRECT_URI = process.env.REDIRECTURI;
const REFRESH_TOKEN = process.env.REFTOKEN;

const oauth2client = new OAuth2(
    CLIENT_ID,CLIENT_SECRET,"https://developers.google.com/oauthplayground"
);

错误是这样的 - newPortfolio/node_modules/google-auth-library/build/src/auth/oauth2client.js:214 throw new Error('没有设置刷新令牌。');不确定它在我的代码中被抛出的位置

oauth2client.setCredentials({
    refresh_token: REFRESH_TOKEN
});
const accesstoken = oauth2client.getAccesstoken()


app.use(express.static('public'));
app.use(express.json());

app.get('/',(req,res)=> {
    res.sendFile(__dirname + '/public/index.html')
})

app.post('/',res) => {

    const smtpTransport = nodemailer.createTransport({
        service: "gmail",auth: {
             type: "OAuth2",user: "my@email.com",clientId: CLIENT_ID,clientSecret: CLIENT_SECRET,refreshToken: REFRESH_TOKEN,accesstoken: process.env.ACCEsstOKEN
        }
   });

    const mailOptions = {
        from: req.body.email,to: 'my@email.com',subject: `req.body.subject`,text: req.body.message
    }


    smtpTransport.sendMail(mailOptions,(error,response) => {
        error ? console.log(error) : res.send('success');
        smtpTransport.close();
   });
})
 
app.listen(PORT,() =>{
    console.log(`server running on port ${PORT}`)
})

在本地主机上运行时一切正常。收到邮件,一切正常。但试图在数字海洋上运行。是给出令牌错误,当我检查网站时,没有 CSS/JS 和电子邮件不发送

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)