You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Firebase Authentication新用户注册后登录报错求助

我帮你排查出几个关键问题,咱们一步步修复:

  • 空字段判断逻辑完全反了!
    你写的 if (isStringNull(email) && isStringNull(password)) 意思是「只有当邮箱和密码都为空时」才提示用户填全,但如果用户只填了一个,就会直接进入登录流程,这会触发Firebase的验证错误。
    把判断改成「只要有一个为空就提示」:
if (isStringNull(email) || isStringNull(password)){ 
    Toast.makeText(mContext, "You must fill out all the fields", Toast.LENGTH_SHORT).show(); 
}
  • 代码存在未闭合的语法错误
    你的catch (NullPointerException e)块之后,没有闭合try-catch、OnCompleteListener和OnClickListener的括号,这会导致编译失败,运行时自然会出问题。补全缺失的闭合括号:
}catch (NullPointerException e){
                                Log.e(TAG, "onComplete: NullPointerException: " + e.getMessage() );
                            }
                        }
                    }
                });
        }
    }
});
  • 空指针隐患:先判断用户是否为空
    虽然task.isSuccessful()为true时user大概率不为空,但保险起见,在调用user.isEmailVerified()前先加非空判断,避免崩溃:
if (user != null && user.isEmailVerified()){ 
    // 跳转首页逻辑
}
  • 优化错误提示,方便排查
    现在你只显示通用的「登录失败」,可以把Firebase返回的具体错误信息展示出来,比如密码不匹配、用户不存在等,帮你更快定位问题:
if (!task.isSuccessful()) { 
    Log.w(TAG, "signInWithEmail:failed", task.getException()); 
    // 显示具体错误信息
    Toast.makeText(LoginActivity.this, "登录失败:" + task.getException().getMessage(), Toast.LENGTH_SHORT).show(); 
    mProgressBar.setVisibility(View.GONE); 
}

另外还要确认:注册新用户时,你有没有调用sendEmailVerification()发送验证邮件?如果没发的话,用户登录时肯定会收到「邮箱未验证」的提示哦。


内容的提问来源于stack exchange,提问作者Raemarc San Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:25:01