我不希望发送验证电子邮件,表明该部件已经完成。 我需要确保用户单击了链接,然后才能允许他们登录。
我正在尝试登录Firebase。但是,我一直在努力寻找如何在用户登录应用之前确保所有内容都经过验证的方法。这是我目前无法找到的正确顺序,以便在登录之前验证用户的电子邮件。
我一直在尝试使用Firebase网站,但它似乎无法解决我遇到的问题。我已经收到了验证电子邮件。我只需要知道如何在进入应用程序之前确保它们已通过验证即可。
谢谢!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_login_screen);
//Get Firebase auth instance
auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
startActivity(new Intent(MainLoginScreen.this, AppNavagation.class));
finish();
}
setContentView(R.layout.activity_main_login_screen);
inputEmail = (EditText) findViewById(R.id.loginemail);
inputPassword = (EditText) findViewById(R.id.loginemail);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
btnSignup = (Button) findViewById(R.id.btn_signup);
btnLogin = (Button) findViewById(R.id.loginbutton);
btnReset = (Button) findViewById(R.id.resetbutton);
//Get Firebase auth instance
auth = FirebaseAuth.getInstance();
btnSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainLoginScreen.this, MainSignUp.class)); //THIS IS FIXABLE JUST PUT BACK TO REGEISTRATION HLEPOOASD
}
});
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainLoginScreen.this, MainResetPassword.class));
}
});
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = inputEmail.getText().toString();
final String password = inputPassword.getText().toString();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
//authenticate user
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(MainLoginScreen.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
FirebaseUser user = auth.getCurrentUser();
if (user != null && user.isEmailVerified()) {
Intent intent = new Intent(MainLoginScreen.this, AppNavagation.class);
startActivity(intent);
finish();
}
if (password.length() < 6) {
inputPassword.setError(getString(R.string.minimum_password));
} else {
Toast.makeText(MainLoginScreen.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show();
}
}
}
});
}
});
}
}
答案 0 :(得分:0)
您可以在其中编写XML代码的位置中选择一个选项,在该选项中,您可以要求用户使用@键入电子邮件地址。如果@丢失,将自动要求用户提供格式正确的电子邮件。此外,为了验证电子邮件,类似的方法可能会有所帮助->
final FirebaseUser user = mAuth.getCurrentUser();
user.sendEmailVerification()
.addOnCompleteListener(this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
// Re-enable button
findViewById(R.id.verify_email_button).setEnabled(true);
if (task.isSuccessful()) {
Toast.makeText(EmailPasswordActivity.this,
"Verification email sent to " + user.getEmail(),
Toast.LENGTH_SHORT).show();
} else {
Log.e(TAG, "sendEmailVerification", task.getException());
Toast.makeText(EmailPasswordActivity.this,
"Failed to send verification email.",
Toast.LENGTH_SHORT).show();
}
}
});
以下是更多信息的链接:https://firebase.googleblog.com/2017/02/email-verification-in-firebase-auth.html