如何使用多重身份验证-Firebase?

时间:2019-11-25 14:24:26

标签: javascript firebase react-native authentication firebase-authentication

我有一个注册屏幕,其中包含“ 用户名,电子邮件,电话号码,密码” 在这种情况下,我使用电话号码身份验证来验证该号码,因此在用户验证其号码后,我将其数据保存到了Firebase DB中,

所以在那之后,我导航到登录屏幕!,其中应该包含 电子邮件,密码 “他之前注册过的人”

所以我不只是比较他的数据是否存在于数据库中, 因此,应使用电子邮件/密码Firebase身份验证

但是我认为这会对我的Bill或其他内容造成很大的打击,

那么您认为实现这些情况的方法是什么,因为稍后我被迫通过电子邮件注册以获取重置密码?

这是我的注册码

 signUp = async () => {
    const {phoneNumber} = this.state;
    this.setState({message: 'code was sent'});
    const phoneWithAreaCode = phoneNumber.replace(/^0+/, '+972');
    console.log(phoneWithAreaCode);
    auth()
      .signInWithPhoneNumber(phoneWithAreaCode, true)
      .then(confirmResult => {
        console.log('confirmResult', confirmResult);
        this.setState({confirmResult, message: 'code was sent'});
        // this.createUserDatabase();
      })
      .then(() => {
        this.props.navigation.navigate('Confirmation', {
          message: this.state.message,
          confirmResult: this.state.confirmResult,
          createUser: uid => this.createUserDatabase(uid),
          phoneWithAreaCode: phoneWithAreaCode,
          signInPhoneNumber: phone => auth().signInWithPhoneNumber(phone),
        });
      });
  };

  createUserDatabase = uid => {
    const {userName, phoneNumber, email} = this.state;
    // const uid = auth().currentUser.uid;

    const data = {
      uid,
      name: userName,
      email: email,
      phoneNumber: phoneNumber,
    };

    database()
      .ref(`users/${uid}`)
      .set(data)
      .then(() => {
        console.log('New poll data sent!');
      })
      .catch(error => console.log('Error when creating new poll.', error));
  };

0 个答案:

没有答案