节点管理器中的{“code”:“ECONNECTION”,“command”:“CONN”}
我创建了firebase HTTP云功能,在生成的链接上发送GET请求时发送邮件,我使用nodemailer发送简单邮件。我正在使用从Google OAuth 2.0 Playground生成的客户端ID,客户端密钥和刷新令牌,并生成访问令牌以对Gmail进行身份验证。
const functions = require('firebase-functions');
const user_name = '[email protected]';
const refresh_token = '1/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
let access_token = '';
const client_id = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const client_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXX';
const email_to = '[email protected]';
const nodemailer = require('nodemailer');
let transporter = nodemailer
.createTransport({
service: 'Gmail',
auth: {
type: 'OAuth2',
clientId: client_id,
clientSecret: client_secret
}
});
transporter.on('token', token => {
console.log('A new access token was generated');
console.log('User: %s', token.user);
access_token = token.accessToken
console.log('Access Token: %s', token.accessToken);
console.log('Expires: %s', new Date(token.expires));
});
// setup e-mail data with unicode symbols
let mailOptions = {
from : user_name, // sender address
to : email_to, // list of receivers
subject : 'Hello ✔', // Subject line
text : 'Hello world ?', // plaintext body
html : '<b>Hello world ?</b>', // html body
auth: {
user : user_name,
refreshToken : refresh_token,
accessToken : access_token,
expires : 1494388182480
}
};
// send mail with defined transport object
exports.mail = functions.https.onRequest((req, res) => {
transporter.sendMail(mailOptions).then( r => {
return res.send(error);
}).catch(e =>{
return res.send(e);
});
});
我一直收到错误:{“code”:“ECONNECTION”,“command”:“CONN”}从邮递员发送GET请求时
我发现transporter.on('token', ()=>{})
没有做任何事情,它完全被我的代码逃脱了。
那么如何生成access_token?
回答如下:显然,nodemailer不在firebase云功能中工作。
当我在express
本地运行时它起作用了