我可以在自定义身份验证旁边添加firebase的google / facebook身份验证吗?

时间:2019-08-24 16:07:33

标签: node.js firebase authentication mongoose jwt

我使用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邮件进行连接→我希望用户访问以前使用自定义身份验证方法创建的个人资料

0 个答案:

没有答案