Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send Firebase email confirmation on signup?

So, I have enabled email/password in the dev console and everything is working fine. Except that I should be getting a confirmation email to the email I inputted, but I'm not getting it. I thought it does it automatically, but apparently it doesn't.


Method for signup:

public void signUp(View v) {
    String email = emailET.getText().toString();
    String password = passwordET.getText().toString();
    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("AD", "createUserWithEmail: " + task.isSuccessful() + task.getException());
                    if (!task.isSuccessful()) {
                        createDialogSignUpError(
                                getApplicationContext().getResources().getString(R.string.signUpFailedET),
                                getApplicationContext().getResources().getString(R.string.signUpFailedEM),
                                getApplicationContext().getResources().getString(android.R.string.ok));
                        Toast.makeText(SignUp.this, task.getException().toString(), Toast.LENGTH_LONG).show();
                    } else if (task.isSuccessful()) {
                        Toast.makeText(SignUp.this, "Registration Successful.", Toast.LENGTH_SHORT).show();
                    }
                }
            });

}

It should be sending, but sadly it's not. I've read somewhere on SO that you need to add a method or something to send the email, and it's missing in the docs, but that wasn't Java.


Edit

According to here, it is only supported in iOS and web. Which is pretty surprising, since after all, android IS Google, and Google is Firebase. So is it possible even with creating a custom sent email?


Edit 2: To be more clear, does Android have an Email sender like C#. That would be the best solution if there isn't an API for this.

like image 631
Ali Bdeir Avatar asked Jun 30 '16 22:06

Ali Bdeir


People also ask

Does Firebase charge for email verification?

The first 10K verifications for both instances (USA, Canada, and India and All other countries) are provided at no cost each month. You are only charged on usage past this no-cost allotment. Prices are per successful verification.

Can Firebase send OTP?

After adding his phone number, the user will click on the Get OTP button after that Firebase will send OTP on that number which is mentioned above.


2 Answers

Now according to the updated firebase documentation

Here is how to send a verification mail to the user that in your case is after creating the account and letting the user to log-in then send him/her a notification that he have to verify the account and then the next login is blocked until he/she didn't verify (I think this is better than making the user is forced to open his email first)

Send a user a verification email

You can send an address verification email to a user with the sendEmailVerification method. For example:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.sendEmailVerification()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });
like image 123
Dasser Basyouni Avatar answered Oct 19 '22 23:10

Dasser Basyouni


You can now plug any Firebase gaps in email coverage by rolling your own email sender using Firebase Cloud Functions. There's an example here. Of course this means more work than just configuring like the built-in options but at least means we can do whatever we need to do. :)

like image 35
ostergaard Avatar answered Oct 19 '22 23:10

ostergaard