I am new to Firebase development. I am creating a user login system with Firebase. I am struggling with verifying emails registered users. Here is the code I wrote.
auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.i("Success", "Yes");
}
else{
Log.i("Success", "No");}
}
});
if (!task.isSuccessful()) {
Toast.makeText(MainActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
startActivity(new Intent(MainActivity.this, Activity2.class));
finish();
}
}
});
}
});
EDIT: No verification email is triggered when sign up is successful. The error I am getting is
10-12 10:41:47.579 10529-10529/com.firebase I/Success:
Nocom.google.firebase.FirebaseException: An internal error has occurred. [ USER_NOT_FOUND ]
You need to check the status of createUserWithEmailAndPassword()
to ensure that it is successful before getting the current user and calling sendEmailVerification()
. There are a number of reasons why createUserWithEmailAndPassword()
might fail (account already exists, weak password, malformed email address, etc.). When it does fail, the current user with be the previously signed-in user or null, if there has not been a previous sign-in.
Restructure your code like this:
auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
Toast.makeText(MainActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.i("Success", "Yes");
}
else{
Log.i("Success", "No");}
}
});
startActivity(new Intent(MainActivity.this, Activity2.class));
finish();
}
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.