Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何创建过期令牌firebase云函数?_Node.js_Firebase_Google Cloud Functions_Token_Firebase Dynamic Links - Fatal编程技术网

Node.js 如何创建过期令牌firebase云函数?

Node.js 如何创建过期令牌firebase云函数?,node.js,firebase,google-cloud-functions,token,firebase-dynamic-links,Node.js,Firebase,Google Cloud Functions,Token,Firebase Dynamic Links,我想创建并发送链接“firebase动态链接”,该链接带有firebase云功能的过期令牌,该功能: 只有收到邮件的用户才能使用它 令牌将在24小时后过期 //我想在这里生成并添加过期令牌 body: { dynamicLinkInfo: { domainUriPrefix: "https://example.page.link", link: "https://www.example.com/

我想创建并发送链接“firebase动态链接”,该链接带有firebase云功能的过期令牌,该功能:

  • 只有收到邮件的用户才能使用它
  • 令牌将在24小时后过期
//我想在这里生成并添加过期令牌

      body: {
        dynamicLinkInfo: {
          domainUriPrefix: "https://example.page.link",
          link: "https://www.example.com/",
          androidInfo: {
            androidPackageName: "com.example.android",
          },
          iosInfo: {
            iosBundleId: "com.example.ios",
          },
        },
      },
      json: true,
    };

    request(options).then(function (parsedBody) {
      console.log(parsedBody);
      sendEmailLink(parsedBody.shortLink);
      return parsedBody.shortLink;
    });
  });

function sendEmailLink(link) {
  //google account credentials used to send email
  var transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secure: true,
    auth: {
      user: "***********@gmail.com",
      pass: "yourpassword",
    },
  });

  const mailOptions = {
    from: `***********`,
    to: snap.data().email,
    subject: "contact form message",
    html: `<h1> tou can make a Order using this link</h1>
                                <p>
                                   <b>link: </b>${link}<br>
                                </p>`,
  };

  return transporter.sendMail(mailOptions, (error, data) => {
    if (error) {
      console.log(error);
      return;
    }
    console.log("Sent!");
  });
}

正文:{
DynamicClinkInfo:{
域名前缀:“https://example.page.link",
链接:“https://www.example.com/",
雄激素类:{
androidPackageName:“com.example.android”,
},
iosInfo:{
iosBundleId:“com.example.ios”,
},
},
},
是的,
};
请求(选项)。然后(函数(parsedBody){
log(parsedBody);
sendmaillink(parsedBody.shortLink);
返回parsedBody.shortLink;
});
});
函数sendEmailLink(链接){
//用于发送电子邮件的google帐户凭据
var transporter=nodeEmailer.createTransport({
主机:“smtp.gmail.com”,
港口:465,
安全:是的,
认证:{
用户:“*********@gmail.com”,
通行证:“您的密码”,
},
});
常量邮件选项={
发件人:`***************`,
发送至:snap.data().email,
主题:“联系方式信息”,
html:`tou可以使用此链接下订单

链接:${link}

`, }; return transporter.sendMail(邮件选项,(错误,数据)=>{ 如果(错误){ console.log(错误); 返回; } console.log(“已发送!”); }); }
我想知道如何实现这一点:如何创建令牌,如何使其过期?如何储存?当用户使用链接时,如何验证它是否有效?具有firebase云功能

对不起,我的英语不好。

您可以尝试使用,它存储在服务器端,您可以设置自定义的过期时间,从5分钟到2周不等

或者您也可以设置自定义到期逻辑,将时间戳和其他参数传递给链接URL,然后在服务器端添加时间检查逻辑以进行验证。提供了有关如何执行此操作的更多信息

      body: {
        dynamicLinkInfo: {
          domainUriPrefix: "https://example.page.link",
          link: "https://www.example.com/",
          androidInfo: {
            androidPackageName: "com.example.android",
          },
          iosInfo: {
            iosBundleId: "com.example.ios",
          },
        },
      },
      json: true,
    };

    request(options).then(function (parsedBody) {
      console.log(parsedBody);
      sendEmailLink(parsedBody.shortLink);
      return parsedBody.shortLink;
    });
  });

function sendEmailLink(link) {
  //google account credentials used to send email
  var transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secure: true,
    auth: {
      user: "***********@gmail.com",
      pass: "yourpassword",
    },
  });

  const mailOptions = {
    from: `***********`,
    to: snap.data().email,
    subject: "contact form message",
    html: `<h1> tou can make a Order using this link</h1>
                                <p>
                                   <b>link: </b>${link}<br>
                                </p>`,
  };

  return transporter.sendMail(mailOptions, (error, data) => {
    if (error) {
      console.log(error);
      return;
    }
    console.log("Sent!");
  });
}