使用Node J在Firebase中使用移动号码和OTP进行身份验证

时间:2020-02-06 11:22:46

标签: javascript node.js firebase firebase-authentication

我已经在nodejs中使用电子邮件和密码进行了身份验证,但是我在Node Js中使用移动电话号码和otp进行了身份验证,并且我还想存储用户详细信息(例如:移动电话号码,用户ID,创建于,名称等)在称为“用户”的集合中。但是我的电话号码没有OTP。 这是我的代码:-

exports.phoneSignUp = (req, res) => {
  const newUser = {
    phoneNumber: req.body.phoneNumber
  };

  let token, userId;
  const noImg = "no-img.png";

  db.doc(`/users/${newUser.phoneNumber}`)
    .get()
    .then((doc) => {
      if (!doc.exists) {
        return firebase.auth.PhoneAuthProvider(newUser.phoneNumber);
      }
    })
    .then(() => {
      return new Promise((resolve) => {
        let getToken = new Promise((resolve) => {
          firebase.auth().onAuthStateChanged(async function(user) {
            if (user) {
              token = await user.getIdToken();
              resolve(token);
            }
          });
        });
        let getUserId = new Promise((resolve) => {
          firebase.auth().onAuthStateChanged(function(user) {
            if (user) {
              userId = user.uid;
              resolve(userId);
            }
          });
        });

        Promise.all([getToken, getUserId]).then(
          (result) => {
            resolve(result);
          },
          (error) => {
            reject(error);
          }
        );
      });
    })
    .then(() => {
      const userCredentials = {
        phoneNumber: newUser.phoneNumber,
        createdAt: timeInIstFormat,
        imageUrl: `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${noImg}?alt=media`,
        idUser: userId
      };
      return db
        .collection("users")
        .doc(newUser.handle)
        .set(userCredentials);
    })
    .then(() => {
      return res.status(201).json({ token: `${token}` });
    })
    .catch((err) => {
      console.error(err);
      return res
        .status(500)
        .json({ general: "Something went wrong, please try again" });
    });
};

我还想将用户数据存储在用户集合中,并且还要检查我是否首次使用手机号码进行注册,然后它将创建我的帐户并在集合中('users / 6364646311')保存其详细信息,例如手机号码,用户名,名称等。

我这样调用此函数:app.post("*/phone_signup/", phoneSignUp);使用邮递员

在邮递员中,我这样输入手机号码:-

{
    "phoneNumber": "+91-6311223300"
}

请帮助我输入代码。 预先感谢。

0 个答案:

没有答案