javascript - java脚本中createusermethod中的firebase.auth()错误
问题描述
这是我使用 firebase 身份验证为 web 注册页面的 java 脚本。当我填写电子邮件和密码直到警报消息测试将执行但 firebase.auth() ..... 它不会执行并且页面将自动刷新。
var email=document.getElementById("inemail").value;
var password=document.getElementById("inpass").value;
var password1=document.getElementById("inpass1").value;
var lPassword=password.length;
var lPassword1=password1.length;
if(lPassword < 7)
{
alert("Password Should more than seven Charecter");
return;
}
else if(password!=password1){
alert("Correctly Enter the Password");
return;
}
else if(password==password1 || lPassword1==lPassword)
{
alert("Testing");
firebase.auth().createUserWithEmailAndPassword(email.toString(),password.toString()).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
alert(errorMessage);
}
console.log(error);
});
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
var email = user.email;
alert("Sucessfully Created");
}
else {
alert("sorry Try again");
}
});
}
}
这个脚本有什么错误吗?如果有错误请帮我找出来。
解决方案
正如 Ticherhaz 在他的评论中解释的那样,您需要使用该then()
方法来检测异步方法返回的PromisecreateUserWithEmailAndPassword()
何时实现。
以下应该可以解决问题:
firebase.auth().createUserWithEmailAndPassword(email.toString(),password.toString())
.then(userCredential => {
var email = userCredential.user.email;
alert("Sucessfully Created");
})
.catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
alert(errorMessage);
}
console.log(error);
});
}
请注意,如文档中所述,“在成功创建用户帐户后,该用户也将登录到您的应用程序”,因此您不需要onAuthStateChanged()
在这种情况下使用该方法。
在您上面的一条评论中,您说“仅在警报消息'测试'此脚本正在执行之前”。实际上,如果新用户创建没有错误,catch()
则不会调用传递给的拒绝处理程序回调,因此您不会得到关于createUserWithEmailAndPassword()
正确执行事实的反馈。为此,您需要该then()
方法。
推荐阅读
- vba - 如何将信息输出到列表框?
- javascript - 将 Lottie SVG 居中到 Header 元素
- pycharm - 最新的 Pycharm 对 brew 安装版本说“Interpeter 似乎无效”
- android - 哪个是好的WebRtc或wifi P2P可以将音频从一台设备共享到另一台设备
- webpack - 是否可以创建独立的块以在不同的应用程序中重复使用?
- docker - docker-compose vs 创建和运行图像
- react-native - 如何修复反应原生博览会起始代码?
- google-cloud-platform - 是否可以使用 Google Scheduler API 安排作业?
- c# - 尝试将文件从 Angular 6 发布到 ASP.NET Core Web Api 时出错
- html - 如何创建此设计:工作经验树模板