简体   繁体   中英

Firebase email verification android

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 ]

  1. You need to Enable Email & Password Authentication, Configuring Email & Password

  2. In this page you can find many tutorials on the page.

If you are using the new version of firebase, you could try to check your connection... Info here

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM