express-让web应用永久控制谷歌电子邮件
发布时间:2022-08-19 05:33:08 287
相关标签:
我最近从Google Domain获得了一个域,它为该域提供专业的电子邮件。因此,我制作了一个 support@domain 电子邮件来发送和接收电子邮件。现在,我构建了一个网络应用程序,它将使用此电子邮件向注册的新用户发送电子邮件验证。
我得到了代码,但是,我使用了 Google 的 OAuth2.0 来允许网络应用程序登录支持电子邮件。这会导致访问令牌过期并强制我进入我的 .env 文件并替换两个令牌。多么乏味!如果我要发布这个网络应用程序,我不能只是进入我的 heroku vars 并每小时更换一次令牌。那是极不切实际的。
我通过谷歌查看了服务帐户,但他们似乎仍然需要 OAuth 作为 3 腿 OAuth。当我使用 Express.js 时,我想知道是否有办法设置令牌并永久使用它。本质上是让网络应用程序永久控制谷歌帐户。我该怎么办?我用什么?非常感谢所有建议。
发送邮件验证代码:
const nodemailer = require("nodemailer")
const dotenv = require("dotenv")
const {generateVerifyToken} = require("./auth")
const { print } = require("@AlecRuin/color-logger")
dotenv.config()
let transporter = nodemailer.createTransport({
service:"gmail",
auth: {
type: 'OAuth2',
user: process.env.EMAIL,
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
refreshToken: process.env.REFRESH_TOKEN,
accessToken: process.env.ACCESS_TOKEN
}
})
module.exports= async function(email){
try {
let mailOptions={
from: "support@domain.us",
to:email,
subject:"Verify your email",
text:`
Thank you for signing up with redacted!!
To verify your email (and make sure you're not some kind of annoying bot), simply follow this link:
${process.env.NODE_ENV === "production"?"www.redacted.com":"localhost:3001"}/api/user/verify/?token=${generateVerifyToken(email)}
`
}
print("sending email",new Error,{isClient:false})
transporter.sendMail(mailOptions,(err,data)=>{
if (err){
console.error(err);
return err
}else{
print("Email sent!",new Error,{isClient:false})
return true
}
})
} catch (error) {
print(error,new Error, {isClient:true,severity:4})
return error
}
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报