检查用户是否完成了电子邮件验证 ReactJS Firebase

问题描述

我有以下代码可以帮助注册用户。目前正在尝试集成电子邮件验证并在完成后执行 updateProfile 回调。我可以使用 .sendEmailVerification() 方法发送电子邮件,但无法弄清楚如何进行检查并执行其他代码。将不胜感激!

export default function SignUp() {
  const history = useHistory();
  const { firebase } = useContext(FirebaseContext);

  const [firstName,setFirstName] = useState('');
  const [emailAddress,setEmailAddress] = useState('');
  const [password,setPassword] = useState('');
  const [error,setError] = useState('');

  const isInvalid = firstName === '' || password === '' || emailAddress === '';

  const handleSignup = (event) => {
    event.preventDefault();

    return firebase
      .auth()
      .createUserWithEmailAndPassword(emailAddress,password)
      .then((result) =>
        result.user
          //.sendEmailVerification()
          .updateProfile({
            displayName: firstName,photoURL: Math.floor(Math.random() * 5) + 1,})
          .then(() => {
            history.push(ROUTES.BROWSE);
          })
      )
      .catch((error) => {
        setFirstName('');
        setEmailAddress('');
        setPassword('');
        setError(error.message);
      });
  };

解决方法

没必要想太多。创建帐户 (createUserWithEmailAndPassword) 时,在 firebase 对象中创建另一个键,用于标记用户处于未验证状态

{
    email: '',password: '',verified: false
}

在用户点击验证 URL 并成功后,将其标记为 true。

{
    email: '',verified: true
}
,

用户已经有一个属性来处理这个问题。

https://firebase.google.com/docs/reference/js/firebase.User#emailverified

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...