Проверка электронной почты с помощью Firebase 3.0 на Android

Я знал, что мы можем проверить электронную почту пользователей с Firebase Auth 3.0. Я не могу найти никакой документации относительно проверки электронной почты на Android. Я могу найти то же самое для iOS, а также для интернета, но не для Android. Любая ссылка на документацию была бы полезной.

Email Types

из изображения ясно, что как только пользователь войдет в систему, он будет уведомлен об этом по электронной почте, чтобы подтвердить свою подписку. Я подписался сам, а также проверено в пользователи на Auth tab, и я могу видеть мой почтовый идентификатор и firebase сгенерированный уникальный идентификатор пользователя. Здесь отсутствует подтверждение по электронной почте на мой электронный идентификатор. Кто-то пробовал или я слишком рано? Спасибо за помощь.

4 ответов


обновление

проверка электронной почты, доступные в версия 9.6 и выше Firebase SDK для Android.

оригинальный ответ

проверка электронной почты пока недоступна для Android. Также ответил здесь больше контекста.


проверка электронной почты для android теперь доступна в Firebase. См. эту заметку о выпуске: https://firebase.google.com/support/release-notes/android#9.6


альтернатива, предложенная командой Firebase

одна вещь, которую вы можете сделать, это добавить узел в базу данных Firebase, которая содержит все адреса электронной почты в качестве детей. Вы должны сделать этот узел только общедоступным (через правила безопасности Firebase).

затем из ваших приложений, как только пользователь регистрируется / входит в систему, вы проверяете, есть ли электронная почта этого пользователя в списке, а если нет, вы подписываете их и выгоняете их из своего приложения (и в качестве бонуса вы можете даже войти в систему адрес электронной почты злоумышленника в вашей базе данных, чтобы вы могли позже проверить, кто пытается получить доступ к вашему приложению).

Это будет работать для первоначального тестирования, если вы знаете идентификаторы электронной почты людей, которые будут тестировать ваше приложение, пока проверка электронной почты не доберется до Android.


поскольку проверка электронной почты работает только с Email/Password authentication, лучшее место для отправки его будет в onComplete метод createUserWithEmailAndPassword(...) метод, после успешной регистрации.

firebaseAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            sendVerificationEmail();
                         ....

таможни sendVerification метод:

public void sendVerificationEmail() {
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    if (user != null) {
        user.sendEmailVerification()
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(SignUpActivity.this, "Signup successful. 
                                Verification email sent", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }

}

затем вы можете проверить, проверил ли пользователь свою электронную почту в любом месте вашего приложения, позвонив:

mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
          firebaseUser = firebaseAuth.getCurrentUser();
            if (firebaseUser != null ) {
                Log.e(TAG, firebaseUser.isEmailVerified() ? "User is signed in and email is verified" : "Email is not verified");
            } else {
                Log.e(TAG, "onAuthStateChanged:signed_out");
            }
        }
    };