已成功通过FirebaseAuth身份验证,为何仍无法更新密码?
FirebaseAuth 身份验证成功但无法更新密码
问题说明
已通过FirebaseAuth完成身份验证,但执行密码更新操作后,账户密码并未实际更改。测试验证身份验证步骤(reauthenticate)成功,但密码更新无效果。
关联代码
val user = Firebase.auth.currentUser val credential = EmailAuthProvider.getCredential(user?.email!!, edtUpdateOldUpdatePass.text.toString().trim()) user?.reauthenticate(credential) ?.addOnCompleteListener { task -> if (task.isSuccessful) { user?.updatePassword(edtUpdatePass.getText().toString().trim()) ?.addOnCompleteListener{task -> if (task.isSuccessful) { Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(this, "NOT OK", Toast.LENGTH_SHORT).show(); } } } }
排查与修复方案
- 检查新密码合规性:Firebase要求密码至少6个字符,确认
edtUpdatePass输入的新密码满足长度要求,不符合规则会导致更新静默失败。 - 输出具体错误信息:修改失败回调,打印或展示错误详情,替代模糊的"NOT OK"提示,精准定位问题:
else { val errorMsg = task.exception?.message ?: "未知错误" Toast.makeText(this, "更新失败:$errorMsg", Toast.LENGTH_LONG).show() } - 确保用户对象状态:在调用
updatePassword前,确认user对象未因生命周期变化(如Activity销毁)变为null,可添加日志验证:if (task.isSuccessful) { Log.d("Auth", "用户对象状态:${user != null}") user?.updatePassword(...) } - 验证旧密码准确性:再次确认
edtUpdateOldUpdatePass输入的旧密码与账户当前密码完全匹配,输入错误会导致后续更新逻辑异常。
内容的提问来源于stack exchange,提问作者Nguyễn Minh Hiệu
相关产品推荐
相关产品推荐

