我在我的应用程序中使用Firebase身份验证,用户可以使用电子邮件和密码注册,并且必须验证电子邮件。
用户收到验证邮件,但是当他进行验证并返回应用程序时,isEmailVerified()始终为false。因此,尽管他已经验证了电子邮件,我的应用程序仍然不允许用户使用所有功能。
但是,如果他们注销并重新登录,则isEmailVerified()立即返回true。但是注销用户并重新登录并不好。
public class Profile extends AppCompatActivity {
FirebaseDatabase database;
DatabaseReference myRef;
TextView name;
Button logout;
FirebaseAuth auth;
String userStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
auth = FirebaseAuth.getInstance();
database = FirebaseDatabase.getInstance();
myRef = database.getReference("name");
name=findViewById(R.id.id_name);
logout=findViewById(R.id.id_logout);
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
auth.signOut();
startActivity(new Intent(Profile.this, Login.class));
}
});
userStatus= String.valueOf(auth.getCurrentUser().isEmailVerified());
if (userStatus =="true")
{
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
name.setText("Hello my name is: "+value);
Log.d("ashu", "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.d("ashu", "Failed to read value.", error.toException());
}
});
}
else {
Toast.makeText(Profile.this,"Verify your email ", Toast.LENGTH_SHORT).show();
name.setText("Verify your email");
}}}