我发送电子邮件验证并点击链接。然后我在FirebaseUser对象上调用isEmailVerified()。这总是返回null,可能是什么原因?
FirebaseUser
isEmailVerified()
null
zaq34kh61#
验证后应刷新用户对象,如下所示:
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(); } });
byqmnocz2#
首先你需要调用这个方法:signInWithEmailAndPassword,用户验证其电子邮件后至少1次....只有在此之后,您才会得到**isEmailVerified()**作为true
signInWithEmailAndPassword
true
zc0qhyus3#
将isEmailVerified()更改为emailVerified;
emailVerified;
r55awzrz4#
如果电子邮件已验证,则重新验证更新的用户...https://firebase.google.com/docs/auth/android/manage-users#re-authenticate_a_user
sz81bmfz5#
与@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. } }
1.刷新当前用户:Auth.auth().currentUser?.reload(完成:((Error?)-> Void)?)1.检查他是否已登录:if Auth.auth().currentUser?.isEmailVerified == true { //处理验证成功}
polkgigr6#
我认为你需要先登录用户的电子邮件和密码使用signInWithEmailAndPassword然后尝试调用isEmailVerified()方法返回用户。
ca1c2owp7#
isEmailVerified应该提供正确的响应,但您可能使用不当。1.如果用户验证了他的电子邮件(他/她收到了一封来自Firebase的电子邮件,并点击了“验证电子邮件”链接),那么它将返回true;1.如果用户没有验证他的电子邮件-它将返回false因此,解决这个问题的方法是更新您的注册流程。当您创建新用户时,您还应该发出命令以启动电子邮件验证过程await user.sendEmailVerification();一旦您的用户将收到一封电子邮件,并将验证它。您的方法:user.isEmailVerified将返回true您的注册过程应该是这样的:
isEmailVerified
await user.sendEmailVerification();
user.isEmailVerified
AuthResult result = await _auth.createUserWithEmailAndPassword( email: email,password: password); FirebaseUser user = result.user; await user.sendEmailVerification();
nom7f22z8#
1.使用createUserWithEmailAndPassword创建新用户1.让它使用sendEmailVerification将验证链接发送到您的gmail1.去你自己的gmail,你会看到验证链接,只需点击该链接1.请输入用户名和电子邮件地址您将看到您自己的帐户已经验证,并可以继续下一个setpshttps://github.com/FirebaseExtended/flutterfire/issues/2208
ax6ht2ek9#
我用这样的东西。如果本地值为true,则返回本地值(因为一旦验证,就永远不会取消验证),否则刷新用户并返回更新后的值。
var isEmailVerified: Bool { get async { if Auth.auth().currentUser?.isEmailVerified == true { return true } try? await Auth.auth().currentUser?.reload() return Auth.auth().currentUser?.isEmailVerified == true } }
9条答案
按热度按时间zaq34kh61#
验证后应刷新用户对象,如下所示:
byqmnocz2#
首先你需要调用这个方法:
signInWithEmailAndPassword
,用户验证其电子邮件后至少1次....只有在此之后,您才会得到**
isEmailVerified()
**作为true
zc0qhyus3#
将
isEmailVerified()
更改为emailVerified;
r55awzrz4#
如果电子邮件已验证,则重新验证更新的用户...
https://firebase.google.com/docs/auth/android/manage-users#re-authenticate_a_user
sz81bmfz5#
与@yehyatt的解决方案相同的技术,但更容易。使用firebase登录用户,刷新用户,然后检查用户是否通过验证。
1.登录用户
1.刷新当前用户:
Auth.auth().currentUser?.reload(完成:((Error?)-> Void)?)
1.检查他是否已登录:
if Auth.auth().currentUser?.isEmailVerified == true { //处理验证成功}
polkgigr6#
我认为你需要先登录用户的电子邮件和密码使用
signInWithEmailAndPassword
然后尝试调用isEmailVerified()
方法返回用户。ca1c2owp7#
isEmailVerified
应该提供正确的响应,但您可能使用不当。1.如果用户验证了他的电子邮件(他/她收到了一封来自Firebase的电子邮件,并点击了“验证电子邮件”链接),那么它将返回true;
1.如果用户没有验证他的电子邮件-它将返回false
因此,解决这个问题的方法是更新您的注册流程。当您创建新用户时,您还应该发出命令以启动电子邮件验证过程
await user.sendEmailVerification();
一旦您的用户将收到一封电子邮件,并将验证它。您的方法:
user.isEmailVerified
将返回true您的注册过程应该是这样的:
nom7f22z8#
1.使用createUserWithEmailAndPassword创建新用户
1.让它使用sendEmailVerification将验证链接发送到您的gmail
1.去你自己的gmail,你会看到验证链接,只需点击该链接
1.请输入用户名和电子邮件地址
您将看到您自己的帐户已经验证,并可以继续下一个setps
https://github.com/FirebaseExtended/flutterfire/issues/2208
ax6ht2ek9#
我用这样的东西。如果本地值为true,则返回本地值(因为一旦验证,就永远不会取消验证),否则刷新用户并返回更新后的值。