从登录活动中忘记使用firebase的密码

时间:2017-10-25 22:55:30

标签: android firebase firebase-authentication

查看文档,我发现了这个:

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为空,因为用户未登录,所以我该如何解决?

1 个答案:

答案 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变量,因为用户未登录。