Android 如何首先在firebase中发送电子邮件验证,然后创建帐户?
在我的注册活动中,用户必须输入电子邮件地址,然后输入长度超过6的密码,并带有特殊标志等。问题是在匹配所有密码要求后,用户单击注册按钮,然后弹出toast消息,表明已发送电子邮件,但同时用户登录。当按下手机的“后退”按钮时,用户将进入应用程序,只有在验证其地址时,用户才会进入应用程序 以下是我的电子邮件注册活动的一部分:Android 如何首先在firebase中发送电子邮件验证,然后创建帐户?,android,firebase-authentication,email-verification,Android,Firebase Authentication,Email Verification,在我的注册活动中,用户必须输入电子邮件地址,然后输入长度超过6的密码,并带有特殊标志等。问题是在匹配所有密码要求后,用户单击注册按钮,然后弹出toast消息,表明已发送电子邮件,但同时用户登录。当按下手机的“后退”按钮时,用户将进入应用程序,只有在验证其地址时,用户才会进入应用程序 以下是我的电子邮件注册活动的一部分: btnSignUp.setOnClickListener(new View.OnClickListener() { @Override public void o
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();
}
}
});
}
}
});
}
}
});
btnSignUp.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串email=inputEmail.getText().toString();
字符串密码=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();
回来
}
如果(!password.matches(“^(?=.[A-Za-z])(?=.*\\d)(?=.[$@$!%*.\35;?&])[A-Za-z\\d$@$!%*.\8,}$”){
Toast.makeText(RegistrationMailActivity.this,“在文件夹和顺序中的内容:Großbuchstaben,Zahl,Spezialzeichen.”,Toast.LENGTH_SHORT.show();
回来
}
if(TextUtils.isEmpty(passwordConfirm)){
Toast.makeText(getApplicationContext(),“Bestätige dein Passwort”,Toast.LENGTH_SHORT).show();
}
否则如果(!password.equals(passwordConfirm)){
Toast.makeText(getApplicationContext(),“Die Passwörter stimmen nichtüberein.Biteüberprüfe deine Eingabe.”,Toast.LENGTH_SHORT).show();
}
否则{
progressBar.setVisibility(View.VISIBLE);
//创建用户
auth.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(用于验证电子邮件的新OnCompleteListener)。19:09时,我想他给出了一些问题的解决方案,但我不知道在何处实现此代码。当您在Firebase身份验证上创建帐户时,该用户将自动登录。无法阻止这种情况,这是预期的行为
如果您希望仅允许用户在验证其电子邮件地址后访问应用程序中的某些屏幕,您可以在导航到该屏幕之前签入代码
如果要阻止未经验证的用户访问您的(Firebase实时数据库、云Firestore或云存储)中的某些数据后端,您可以。确定当用户单击“注册”按钮,然后关闭应用程序并再次打开时,他会进入MainActivity,我应该重写什么方法来防止这种行为?您需要(例如在中)然后显示当前活动,或者重定向到正确的活动。