查看文档,我发现了这个:
FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = "user@example.com";
auth.sendPasswordResetEmail(emailAddress)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
}
});
我遇到问题,因为我需要在登录活动中实现忘记密码功能,其中FirebaseAuth为空,因为用户未登录,所以我该如何解决?
答案 0 :(得分:3)
FirebaseAuth.getInstance()
方法永远不会返回null
,因此您的代码将有效。
如果用户未登录,则FirebaseAuth.getInstance().getCurrentUser()
方法将返回null
。
来自Android Firebase Authentication getting started documentation:
声明
的实例FirebaseAuth
private FirebaseAuth mAuth;
在
onCreate()
方法中,初始化FirebaseAuth实例。mAuth = FirebaseAuth.getInstance();
初始化您的活动时,请检查该用户当前是否是 已登录。
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
您问题中的代码来自send a password reset section:
您可以通过以下方式向用户发送密码重置电子邮件
sendPasswordResetEmail
方法。例如:FirebaseAuth auth = FirebaseAuth.getInstance(); String emailAddress = "user@example.com"; auth.sendPasswordResetEmail(emailAddress) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
此处指定了emailAddress
变量,因为用户未登录。