【发布时间】:2016-10-14 12:45:09
【问题描述】:
我已经使用电子邮件和密码实现了 Firebase 身份验证,这是我的代码
mFirebaseAuth.createUserWithEmailAndPassword(edtEmail.getText().toString(), edtPassword.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = task.getResult().getUser();
Toast.makeText(RegisterActivity.this, "User registered successfully " + user.getEmail(), Toast.LENGTH_SHORT).show();
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
finish();
Log.e("RegisterActivity", "onComplete: " + task.getResult().toString());
} else
Log.e("RegisterActivity", "onComplete: " + task.getException().toString());
}
});
} else {
Toast.makeText(RegisterActivity.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
}
}
});
注册成功后,我正在向用户发送确认邮件,但收到此错误。
com.google.firebase.FirebaseException: An internal error has occurred. [ USER_NOT_FOUND ]
我也在 firebase 中检查过,我的用户已注册并且在那里可用,但不知何故我无法发送确认邮件。
【问题讨论】:
-
有时在 firebase 中创建用户需要一些额外的时间,因此当您尝试向他发送电子邮件时,您的用户可能未创建。
-
但是在 toast 中我得到了
user.getEmail(),如果没有创建用户,我也不应该得到电子邮件地址。 -
如果将
user = task.getResult().getUser()替换为user = mFirebaseAuth.getCurrentUser(),会得到相同的结果吗? -
@qbix 如果我使用的是
mFirebaseAuth.getCurrentUser(),它会显示com.google.firebase.auth.FirebaseAuthInvalidUserException: The user's credential is no longer valid. The user must sign in again.
标签: android firebase firebase-authentication