Firebase Authentication JavaScript配置问题:用户无法注册且无报错
修复Firebase用户注册问题的几个关键点
我帮你排查了代码里的几个核心问题,这些应该就是导致注册失败却没有任何报错提示的原因:
选择器错误导致无法获取邮箱值
你获取邮箱的代码是var email = $('user').val();,这里的选择器缺少了必要的标识符——如果你的邮箱输入框id是user,应该写成$('#user').val();如果是class属性,就用$('.user').val()。没有标识符的话,jQuery会尝试寻找<user>标签,显然这不存在,所以email的值会是undefined,Firebase接收无效参数后,还没来得及抛出错误就被页面刷新打断了。未阻止表单默认提交行为
表单提交时浏览器会默认刷新页面,这会直接中断Firebase的异步注册请求,导致你既看不到成功提示,也捕获不到错误信息。必须在submit事件处理函数里添加event.preventDefault()来阻止这个默认行为。错误使用Promise回调方法
Firebase的createUserWithEmailAndPassword返回的是标准Promise对象,而非jQuery的Deferred对象,所以.success()方法是无效的,应该用标准的.then()来处理成功后的逻辑。
下面是修正后的register.js代码:
// Initialize Firebase var config = { apiKey: "mykey", authDomain: "mydomain", databaseURL: "myurl", projectId: "myid", storageBucket: "mybucket", messagingSenderId: "mysenderid" }; firebase.initializeApp(config); $(document).ready(function(){ $("form").submit(function(event){ // 阻止表单默认刷新行为 event.preventDefault(); // 修正选择器(假设邮箱输入框id为user) var email = $('#user').val(); var password = $('#password').val(); // 先做基础字段校验 if (!email || !password) { alert("请填写完整的邮箱和密码"); return; } firebase.auth().createUserWithEmailAndPassword(email, password) .then(function(val) { alert("注册成功!!"); console.log(val); // 可在此添加注册成功后的后续逻辑,比如页面跳转 }) .catch(function(error) { alert("注册失败"); var errorCode = error.code; var errorMessage = error.message; if (errorCode == 'auth/weak-password') { alert('密码强度不足,请设置包含字母、数字的组合密码。'); } else { alert(errorMessage); } console.log(error); }); }); });
另外建议你打开浏览器开发者工具(按F12),切换到Network标签页,查看Firebase的请求状态——即使页面没有弹出提示,这里也能看到请求是否成功、返回的具体错误信息,方便进一步排查问题。
内容的提问来源于stack exchange,提问作者Kevin Gardenhire
相关产品推荐
相关产品推荐

