Email verification for Firebase Auth UI

余生颓废 提交于 2019-12-04 03:07:01

You can simply do it as follows,

  1. Get Current Firebase User Instance,

    final FirebaseUser currentUser = mAuth.getCurrentUser();
    
  2. Check if the provider is password indicating that the login method used is Email Auth,

    if(null != currentUser) {
        if("password".equals(currentUser.getProviderData().get(0).getProviderId())) {
            /* Handle Verification */
        }
    }
    

    Reference Link: https://firebase.google.com/docs/reference/android/com/google/firebase/auth/EmailAuthProvider#PROVIDER_ID

  3. Check if user is already verified,

    currentUser.isEmailVerified();
    
  4. If user is not verified then the following code can be used to send a verification EMail,

    if (!currentUser.isEmailVerified()) {
        /* Do Something */
    }
    
    /* Send Verification Email */
    currentUser.sendEmailVerification()
            .addOnCompleteListener(this, new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    /* Check Success */
                    if (task.isSuccessful()) {
                        Toast.makeText(getApplicationContext(),
                                "Verification Email Sent To: " + currentUser.getEmail(),
                                Toast.LENGTH_SHORT).show();
                    } else {
                        Log.e(TAG, "sendEmailVerification", task.getException());
                        Toast.makeText(getApplicationContext(),
                                "Failed To Send Verification Email!",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
    

Once you have all the pieces in place, the final code snippet should look something like below:

Final Code Snippet:

if (requestCode == RC_SIGN_IN) {
    IdpResponse response = IdpResponse.fromResultIntent(data);

    /* Success */
    if (resultCode == RESULT_OK) {
        final FirebaseUser currentUser = mAuth.getCurrentUser();

        if(null != currentUser) {
            if("password".equals(currentUser.getProviderData().get(0).getProviderId())) {
                if(!currentUser.isEmailVerified()) {
                    /* Send Verification Email */
                    currentUser.sendEmailVerification()
                        .addOnCompleteListener(this, new OnCompleteListener() {
                            @Override
                            public void onComplete(@NonNull Task task) {
                                /* Check Success */
                                if (task.isSuccessful()) {
                                    Toast.makeText(getApplicationContext(),
                                            "Verification Email Sent To: " + currentUser.getEmail(),
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    Log.e(TAG, "sendEmailVerification", task.getException());
                                    Toast.makeText(getApplicationContext(),
                                            "Failed To Send Verification Email!",
                                            Toast.LENGTH_SHORT).show();
                                }
                            }
                        });

                    /* Handle Case When Email Not Verified */
                }
            }

            /* Login Success */
            startActivity(new Intent(Login.this, MainActivity.class));
            finish();
            return;
        }
    } else {
        /* Handle Failure */
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!