【发布时间】:2021-10-18 01:14:02
【问题描述】:
我为signup 创建了一个rest API。这个想法是使用
admin.auth().createUser({...}) 方法并在收到回复后向用户提供的电子邮件发送电子邮件确认链接。
需要做的另一件事是创建一个名为“users”的集合,并将一些用户数据添加到 id 等于 auth id 的文档中。
问题是我的应用程序可以很好地创建用户,但我没有收到任何电子邮件确认,也没有将数据添加到集合中。
代码:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const express = require("express");
const app = express();
const cors = require("cors")({origin: true});
admin.initializeApp();
const db = admin.firestore();
app.get("/hello-world", (req, res) => {
res.send("Hello World!");
});
// create user with email and password with admin sdk
app.post("/signup", cors, (req, res) => {
const email = req.body.email;
const password = req.body.password;
// check if email is a valid email
if (!email || !email.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i)) {
res.status(400).send("Invalid email");
return;
}
admin.auth().createUser({
email: email,
password: password,
emailVerified: false,
}).then(function(userRecord) {
admin.auth().sendEmailVerification(userRecord.uid).then(function() {
res.send("User created");
})
return db.collection("users").doc(userRecord.uid).set({
email: userRecord.email,
password: userRecord.password,
emailVerified: userRecord.emailVerified,
username: "",
firstName: "",
lastName: "",
});
}).then(null, function(error) {
res.status(400).send(error);
})
});
exports.app = functions.https.onRequest(app);
【问题讨论】:
标签: node.js firebase-authentication google-cloud-functions firebase-admin