【问题标题】:Firebase phone auth issueFirebase 电话身份验证问题
【发布时间】:2021-05-20 16:43:52
【问题描述】:

我正在使用带有firebase的react native,如果不存在则firebase创建帐户的电话身份验证(默认行为),那么如何创建检查点,如果用户不存在,那么它应该先注册然后登录?

【问题讨论】:

    标签: firebase react-native


    【解决方案1】:

    与其检查用户之前是否注册过,最好的方法是直接sign in the user normally,然后处理用户数据文档不存在的情况。

    这避免了必须开发一种方法来检查电话号码之前是否已注册,并有助于避免在实施不当时泄露存储的电话号码。

    const [user, setUser] = useState(
      () => firebase.auth().currentUser || undefined
    );
    const initializingUser = user === undefined;
    
    useEffect(() => firebase.auth().onAuthStateChanged(setUser), []);
    
    const [userData, setUserData] = useState();
    const initializingUserData = userData === undefined;
    
    useEffect(() => {
      if (initializingUser)
        return; // do nothing yet
      
      if (!user) {
        setUserData(null);
        return;
      }
    
      // clear out any stale data
      setUserData(undefined);
    
      return firebase.firestore()
        .collection("users")
        .doc(user.uid)
        .onSnapshot({
          next(snapshot) {
            setUserData(!snapshot.exists ? null : snapshot.data());
          },
          error(err) {
            // TODO: handle errors
          }
        });
    }, [user && user.uid]); // only rerun when the user ID changes (between undefined, null and different IDs)
    
    useEffect(() => {
      if (initializingUser || initializingUserData)
        return; // do nothing yet
    
      if (!user) {
        // not logged in, go to login if not already here
        navigator.navigate("Login");
        return;
      }
    
      if (userData) {
        // has user data, take to dashboard
        navigator.navigate("Dashboard");
        return;
      }
    
      // no user data, take to profile setup
      navigator.navigate("CompleteProfile");
    }, [user, userData]);
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 2020-10-04
      • 2021-06-27
      • 2021-03-22
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      相关资源
      最近更新 更多