【发布时间】:2020-10-14 20:24:04
【问题描述】:
我想创建并发送带有过期令牌的链接“firebase 动态链接”和 firebase 云功能:
- 只有收到邮件的用户才能使用。
- 令牌将在 24 小时后过期。
exports.orderDynamicLink = functions.database
.ref("order/{orderId}")
.onWrite((event) => {
const options = {
method: "POST",
uri: `https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=${
functions.config().applinks.key
}`,
// 我要生成并在此处添加过期令牌
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!");
});
}
我想知道如何实现:如何创建令牌,如何使其过期?怎么存放呢?以及当用户使用链接是否有效时如何验证它?具有firebase云功能。
对不起,我的英语不好。
【问题讨论】:
标签: node.js firebase google-cloud-functions token firebase-dynamic-links