我使用jwt和mongoose在节点应用程序中设置了自定义身份验证,生成了自己的令牌和全部令牌。
我现在想将Google身份验证添加到我的登录页面,但是我想验证用户在google auth中使用的电子邮件(如果数据库中已经存在该电子邮件,我想将他链接到现有帐户)。 / p>
我不知道如何添加此Firebase身份验证:
firebase.auth().signInWithPopup(googleAuthProvider);
在我的代码中:
// @route POST api/auth
// @desc Authenticate user & get token
// @access Public
router.post(
"/",
async (req, res) => {
const { email, password } = req.body;
try {
let user = await User.findOne({ email });
//Check if user exists
if (!user) {
return res.status(400).json({
errors: [{ msg: "Invalid credentials" }]
});
}
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
return res.status(400).json({
errors: [{ msg: "Invalid credentials" }]
});
}
//Return webToken
const payload = {
user: {
id: user.id
}
};
jwt.sign(
payload,
config.get("jwtSecret"),
{ expiresIn: 360000 },
(err, token) => {
if (err) throw err;
res.json({ token });
}
);
} catch (err) {
console.log(err.message);
return res.status(500).json("Server error");
}
}
);
预期方案:
1-用户使用应用程序的表单输入他的电子邮件地址example@gmail.com创建一个帐户,并输入密码
2-用户连接到他的个人资料并添加他的信息
3-现在,用户可以使用具有自定义身份验证的电子邮件/密码进行连接
4-用户希望使用google authenticate与他的example@gmail.com邮件进行连接→我希望用户访问以前使用自定义身份验证方法创建的个人资料