【问题标题】:create an intermediate step to verify the email address using firebase, react native创建一个中间步骤以使用 firebase 验证电子邮件地址,反应原生
【发布时间】:2021-04-07 12:13:48
【问题描述】:

我正在尝试使用 react native 和 firebase 验证我的电子邮件地址。目前,我有一个注册页面,在输入所有凭据后,它会向电子邮件发送一个验证链接,我直接进入一个新屏幕。无法验证我的电子邮件。首先,我正在尝试验证我的电子邮件,通过单击电子邮件链接,然后,我可以导航到新屏幕。我正在尝试创建一个中间步骤来验证我的电子邮件地址,目前无法验证我的电子邮件链接。

这是我的尝试,

register: async (email, password) => {
          try {
            const userCredential = await auth().createUserWithEmailAndPassword(
              email,
              password,
          );
         await userCredential.user.sendEmailVerification();
       } catch (e) {
      console.error(e);
    }
},

这是我重定向到新屏幕的尝试。

import React, {useContext, useState, useEffect} from 'react';
import {NavigationContainer} from '@react-navigation/native';
import auth from '@react-native-firebase/auth';
import {AuthContext} from './AuthProvider';

import AuthStack from './AuthStack';
import AppStack from './AppStack';

const Routes = () => {
    // getting the created user
  const {user, setUser} = useContext(AuthContext);
 
  // subscribe to the users current authentication state, and receive an event whenever that state changes.
  const onAuthStateChanged = user => {
    setUser(user);
  };

  useEffect(() => {
    const subscriber = auth().onAuthStateChanged(onAuthStateChanged);
    return subscriber; // unsubscribe on unmount
  }, []);


  return (
    <NavigationContainer>
      {user ? <AppStack /> : <AuthStack />}
    </NavigationContainer>
  );
};

export default Routes;

【问题讨论】:

标签: reactjs firebase react-native firebase-authentication


【解决方案1】:

您可以设置设置用户仅当电子邮件验证如下所示。如果用户电子邮件地址未验证,则添加中间屏幕。

const [user, setUser] = useState(false);
const [emailVerified, setEmailVerified] = useState(true);

firebase.auth().onAuthStateChanged(function (user) {
    if (user) {
        if(user.emailVerified){
            setUser(true);  setEmailVerified(true);

        }
        else{
            setEmailVerified(false);
        }
    }
});

然后像这样使用你的条件渲染:

{user && <AppStack />}
{!user && <AuthStack />}
{!emailVerified && <EmailPendingVerifiedScreen />}

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 2014-06-06
    • 2012-07-14
    • 2016-11-03
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多