Что на самом деле я здесь делаю, когда пользователь входит в свою учетную запись, затем я проверяю, что независимо от того, подтвердили ли они свой адрес электронной почты или нет, если нет, тогда я запускаю EmailVerificationActivity
. Откуда, когда пользователь нажимает кнопку ОТПРАВИТЬ ВЕРИФИКАЦИЮ , на адрес электронной почты пользователя будет отправлен код подтверждения по электронной почте.
![User is sending email verification link](https://i.stack.imgur.com/0Up0v.gif)
после что когда пользователь успешно подтвердил свой адрес электронной почты, когда он снова нажмет кнопку ОТПРАВИТЬ ВЕРИФИКАЦИЮ .
Вместо отображения всплывающего сообщения Toast.makeText(this, "Your email has been verified, Now you can login.", Toast.LENGTH_LONG).show();
, снова отправьте ссылку проверки электронной почты.
![sending email verification link again](https://i.stack.imgur.com/XhLMq.gif)
Почему isEmailVerified()
возвращает условие false
.
Это моя EmailVerificationActivity
package com.socialcodia.sherewatan;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class EmailVerificationActivity extends AppCompatActivity {
private TextView tvEmailAddress;
private Button btnSendVerificationEmail, btnSignOut;
//Firebase
FirebaseAuth mAuth;
FirebaseUser mUser;
String email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_email_verification);
//Init
tvEmailAddress = findViewById(R.id.tvEmailAddress);
btnSendVerificationEmail = findViewById(R.id.btnSendVerificationEmail);
btnSignOut = findViewById(R.id.btnSignOut);
//Firebase Init
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
// get and set email address
email = mUser.getEmail();
tvEmailAddress.setText(email);
btnSignOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signOut();
}
});
btnSendVerificationEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isEmailVerified();
}
});
}
private void isEmailVerified()
{
if (mAuth.getCurrentUser()!=null)
{
boolean isEmailVerified = mAuth.getCurrentUser().isEmailVerified();
if (isEmailVerified)
{
Toast.makeText(this, "Your email has been verified, Now you can login.", Toast.LENGTH_LONG).show();
}
else
{
sendVerificationEmail();
}
}
}
private void sendVerificationEmail()
{
mAuth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful())
{
Toast.makeText(EmailVerificationActivity.this, "Email verification link has been sent", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(EmailVerificationActivity.this, "Oops! Failed to send email verification link", Toast.LENGTH_SHORT).show();
}
}
});
}
private void sendToLoginWithEmail()
{
Intent intent= new Intent(getApplicationContext(),LoginActivity.class);
intent.putExtra("email",email);
startActivity(intent);
finish();
}
private void signOut()
{
mAuth.signOut();
sendToLoginWithEmail();
}
}