如何首先在Firebase中发送电子邮件验证,然后创建帐户?

丹尼尔·斯派洛(Daniel Sparrow)

在我的注册活动中,用户必须输入电子邮件地址,然后输入长于6的密码,并带有特殊符号等。问题是,在满足所有密码要求后,用户单击注册按钮,然后单击祝酒词弹出消息,表明已经发送了一封电子邮件,但同时用户已登录。按下电话的后退按钮时,该用户位于应用程序中,只有在验证其地址后,该用户才应该在该应用程序中。

这是我的电子邮件注册活动的一部分:

btnSignUp.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        String email = inputEmail.getText().toString();
        String password = inputPassword.getText().toString();
        String passwordConfirm = inputPasswordConfirm.getText().toString();

        if (password.length() < 6) {
            Toast.makeText(getApplicationContext(), "Das Passwort ist zu kurz, gebe mindestens 6 Zeichen ein.", Toast.LENGTH_SHORT).show();
            return;
        }

        if (!password.matches("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$")){
            Toast.makeText(RegistrationEmailActivity.this, "Dein Passwort hat mindestens eine der folgenden Anforderungen nicht: Großbuchstaben, Zahl, Spezialzeichen.", Toast.LENGTH_SHORT).show();
            return;
        }

        if (TextUtils.isEmpty(passwordConfirm)){
            Toast.makeText(getApplicationContext(), "Bestätige dein Passwort", Toast.LENGTH_SHORT).show();
        }
        else if (!password.equals(passwordConfirm)){
            Toast.makeText(getApplicationContext(), "Die Passwörter stimmen nicht überein. Bitte überprüfe deine Eingabe.", Toast.LENGTH_SHORT).show();
        }
        else {

            progressBar.setVisibility(View.VISIBLE);
            //create user
            auth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener( new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            Toast.makeText(RegistrationEmailActivity.this, "Welcome to the app", Toast.LENGTH_SHORT).show();
                            progressBar.setVisibility(View.GONE);

                            if (!task.isSuccessful()) {
                                Toast.makeText(RegistrationEmailActivity.this, "Authentication failed." + task.getException(),
                                        Toast.LENGTH_SHORT).show();
                            } else {
                                auth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()){
                                        Toast.makeText(RegistrationEmailActivity.this, "Du wurdest erfolgreich registriert. Schau in deinem Postfach nach und klicke auf den Link, " +
                                                "damit die E-Mail verifiziert wird und du dich einloggen kannst.", Toast.LENGTH_SHORT).show();
                                    }else {
                                        Toast.makeText(RegistrationEmailActivity.this, "Das hat leider nicht geklappt. Überprüfe deine E-Mail und versuche es erneut.", Toast.LENGTH_SHORT).show();
                                    }
                                    }
                                });
                            }

                        }
                    });
        }

    }
});

我使用了本教程https://www.youtube.com/watch?v=06YKlMdWyMM来验证电子邮件。我猜他在19:09展示了一些解决问题的方法,但是我不知道在哪里实现此代码。

弗兰克·范普菲伦

当您在Firebase身份验证上创建帐户时,该用户将自动登录。无法阻止这种情况,这是预期的行为。

如果您只希望用户在验证其电子邮件地址后才允许他们访问应用程序中的某些屏幕,则可以isEmailVerified在导航到该屏幕之前入代码。

如果要阻止未经验证的用户访问您的(Firebase实时数据库,Cloud Firestore或Cloud Storage)后端中的某些数据,则可以在安全规则中检查该用户的令牌,以确保其电子邮件地址得到验证

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 Gmail 帐户在 Django 中发送电子邮件

使用SMTP在Gmail帐户中发送电子邮件

使用Firebase Cloud功能创建用户后如何发送电子邮件验证?

如何使用VBA附加所有工作表但首先在电子邮件中

如何在Django中发送电子邮件以注册帐户?

在概念验证Rails应用中发送电子邮件

FOSUserBundle不发送电子邮件帐户验证

在 Flutter 中发送电子邮件(Firebase 后端)

如何在 Java 中发送电子邮件?

如何使用Mailgun在Swift中发送电子邮件

如何在laravel中发送电子邮件?

如何在Android Studio中发送电子邮件

如何创建在wordpress中发送电子邮件的表单?

如何通过自己的smtp在firebase https函数中发送电子邮件

在R中发送电子邮件

在MVC中发送电子邮件

Firebase 向用户发送电子邮件验证

Xamarin Firebase发送电子邮件验证

Ionic Firebase发送电子邮件验证

Firebase - 如何从 onCreate 云函数侦听器发送电子邮件验证?

Swift Firebase:发送电子邮件后如何检查用户是否经过验证?

SMTP 不在 Gmail 企业帐户中发送电子邮件

如何使用cPanel电子邮件帐户在laravel中发送确认电子邮件?

Firebase电子邮件验证,无需创建和帐户

是否可以?在 Firebase 身份验证中创建记录之前发送电子邮件验证?

通过具有双向身份验证的gmail帐户中的Java发送电子邮件

使用多个帐户时,如何确保从正确的帐户发送电子邮件

使用xlwt创建文件并在Django应用程序中发送电子邮件

可以创建一个钩子来在 pyinstaller 执行中发送电子邮件吗?