返回

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   
    }
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
相关帖子