问题描述
我有以下代码可以帮助注册用户。目前正在尝试集成电子邮件验证并在完成后执行 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