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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何首先在Firebase中发送电子邮件验证,然后创建帐户?相关的知识,希望对你有一定的参考价值。

在我的注册活动中,用户必须输入电子邮件地址,然后输入大于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身份验证上创建帐户时,该用户将自动登录。无法阻止它,这是预期的行为。

以上是关于如何首先在Firebase中发送电子邮件验证,然后创建帐户?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Gmail SMTP 设置在 Joomla 中发送电子邮件。收到 SMTP 服务器错误:需要 5.5.1 身份验证。如何解决这个问题?

仅在确认付款后,如何在 NodeMailer 中发送电子邮件?

在测试 php 以在 xampp 中发送电子邮件验证时遇到问题

Firebase Crashlytics 调试模式不在 ios 中发送报告

如何在android中发送电子邮件[重复]

如何在 VC++ 中发送电子邮件?