即使在验证电子邮件后,Firebase isEmailVerified也会返回false

时间:2016-11-17 00:22:28

标签: android firebase firebase-authentication

我发送电子邮件验证并点击该链接。然后我在A=imread("img.jpg"); 对象上调用isEmailVerified()。这总是返回FirebaseUser,可能是什么原因?

8 个答案:

答案 0 :(得分:10)

您应该在验证后刷新用户对象,如下所示:

usertask = mAuth.getCurrentUser().reload();
usertask.addOnSuccessListener(new OnSuccessListener() {
@override
public void onSuccess(Void aVoid) {
user = mAuth.getCurrentUser();
boolean useremailveri = user.isEmailVerified();
String useremailuid = user.getUid();
}
});

答案 1 :(得分:2)

首先,您必须调用此方法: signInWithEmailAndPassword ,至少要在用户验证其电子邮件后1次....

仅在此之后,您将获得 isEmailVerified() 作为true

答案 2 :(得分:1)

重新验证更新电子邮件的用户,如果电子邮件已通过验证...

https://firebase.google.com/docs/auth/android/manage-users#re-authenticate_a_user

答案 3 :(得分:0)

我认为您需要先使用signInWithEmailAndPassword使用用户的电子邮件和密码登录,然后尝试拨打isEmailVerified() 返回用户的方法。

答案 4 :(得分:0)

isEmailVerified应该提供正确的响应,但是您可能使用不正确。

  1. 如果用户验证了他的电子邮件(他/她从firebase收到了电子邮件,然后单击“验证电子邮件”链接),则它将返回 true ;
  2. 如果用户未验证其电子邮件-它将返回 false

因此,此问题的解决方案是更新您的注册过程。 创建新用户时,您还应该发出命令以开始电子邮件验证过程await user.sendEmailVerification();

您的用户一旦收到电子邮件,便会对其进行验证。您的方法:user.isEmailVerified将返回 true

您的注册过程应如下所示:

    AuthResult result = await _auth.createUserWithEmailAndPassword(
        email: email,password: password); 
    FirebaseUser user = result.user;
    await user.sendEmailVerification();

答案 5 :(得分:0)

isEmailVerified()更改为emailVerified;

答案 6 :(得分:0)

  1. 使用createUserWithEmailAndPassword创建新用户
  2. 让它使用sendEmailVerification将验证链接发送到您的gmail
  3. 转到您自己的Gmail,您将看到验证链接,然后单击 在该链接上
  4. 尝试使用用户名和电子邮件登录

您将看到自己的帐户已经过验证,可以继续进行下一个设置

https://github.com/FirebaseExtended/flutterfire/issues/2208

答案 7 :(得分:0)

与@yehyatt 的解决方案相同的技术,但更简单。使用 firebase 登录用户,刷新用户,然后检查用户是否通过验证。

  1. 让用户登录

     Auth.auth().signIn(withEmail: YourEMail, password: YourPassword) { result, error in
         if error != nil {
             logInErrorReason = "\(error!.localizedDescription)"
             // An error ocurred
         }else {
             // Handle successful login.
         }
     }
    
  2. 刷新当前用户:

    Auth.auth().currentUser?.reload(completion: ((Error?) -> Void)?)

  3. 检查他是否已登录:

    if Auth.auth().currentUser?.isEmailVerified == true { // 处理成功验证}