数据库中添加凭据。用户已添加身份验证,但未添加到数据库中?"/>
我需要在身份验证中添加用户并在Firestore数据库中添加凭据。用户已添加身份验证,但未添加到数据库中?
email: req.body.email,
password: req.body.password,
confirmPassword: req.body.confirmPassword,
userHandle: req.body.userHandle,
};
//validate user data
let token;
db.collection("users")
.doc(newUser.userHandle)
.get()
.then((doc) => {
if (doc.exists) {
return res
.status(400)
.json({ userHandle: "this user handle is already taken" });
} else {
return (firebase
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.password))
}
})
.then((data) => {
//The problem is here i am not receiving a token is display the data it shows uid and email and details even accesstoken is displayed but i cannot get token from the data which is required for authentication later on
token= data.user.getIdToken();
const userCredentials = {
userHandle: newUser.userHandle,
email: newUser.email,
createdAt: new Date().toISOString(),
userId: userId,
};
return db
.collection("users")
.doc(newUser.userHandle)
.set(userCredentials);
})
.then(() => {
return res.status(201).json({ token });
})
.catch((err) => {
console.error(err);
if (err.code === "auth/email-already-in-use") {
return res.status(400).json({ email: "email already in use" });
} else {
return res.status(500).json({ error: err.code });
}
});
[帮帮我,我正在尝试建立注册功能,其中用户凭证包含的电子邮件和密码不止是电子邮件密码身份验证用户,但在Firestore数据库中没有创建用户,我想使用用户句柄创建用户并添加凭证在数据库中
回答如下:firebase.auth().createUserWithEmailAndPassword()
是JavaScript SDK的方法,而不是Admin SDK的方法。
在云功能中,您必须使用Admin SDK,尤其是Admin SDK的createUser()
方法。
此外,请注意这样做
createUser()
您可能正在终止HTTP Cloud Function,请参阅 db.collection("users")
.doc(newUser.userHandle)
.get()
.then((doc) => {
//....
})
.then((data) => {
userId = data.user.uid;
return res.json({ data: data.user.getIdToken() });
})
和Cloud Function doc。因此,在大多数情况下,其余代码将不会执行。
[我建议您观看Doug展示的有关“ JavaScript承诺”的三个Firebase视频:Express doc
更多推荐
我需要在身份验证中添加用户并在Firestore数据库中添加凭据。用户已添加身份验证,但未添加到数据库中?
发布评论