我发送电子邮件验证并点击该链接。然后我在A=imread("img.jpg");
对象上调用isEmailVerified()
。这总是返回FirebaseUser
,可能是什么原因?
答案 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
应该提供正确的响应,但是您可能使用不正确。
因此,此问题的解决方案是更新您的注册过程。
创建新用户时,您还应该发出命令以开始电子邮件验证过程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)
您将看到自己的帐户已经过验证,可以继续进行下一个设置
答案 7 :(得分:0)
与@yehyatt 的解决方案相同的技术,但更简单。使用 firebase 登录用户,刷新用户,然后检查用户是否通过验证。
让用户登录
Auth.auth().signIn(withEmail: YourEMail, password: YourPassword) { result, error in
if error != nil {
logInErrorReason = "\(error!.localizedDescription)"
// An error ocurred
}else {
// Handle successful login.
}
}
刷新当前用户:
Auth.auth().currentUser?.reload(completion: ((Error?) -> Void)?)
检查他是否已登录:
if Auth.auth().currentUser?.isEmailVerified == true { // 处理成功验证}