[英]How to add email verification in this flutter? I need to verify users before signing them in
This code must provide me email verification for the user when they click sign in firstly they have to verify their mail afterwards they can sign in此代码必须在用户单击登录时为我提供 email 验证首先他们必须验证他们的邮件然后才能登录
onPressed: () async{
if (nameTextEditingController.text.length < 4) {
displayToastMessage(
"Username Must be atleast 4 characters",
context);
} else if (!emailTextEditingController.text
.contains("@")) {
displayToastMessage("Email is not Valid ", context);
} else if ((phoneTextEditingController.text.length <10 )) {
displayToastMessage(
"Invalid Phone number ", context);
} else if (passwordTextEditingController.text.length <
7) {
displayToastMessage(
"Password must be 6 characters long", context);
} else {
registerNewUser(context);
}
}),
],
),
),
FlatButton(
onPressed: () {
Navigator.pushNamedAndRemoveUntil(
context, LoginScreen.idscreen, (route) => false);
},
child: Text("Already have an Account ? Login Here",style: TextStyle(fontSize: 17,color: Colors.white),)),
],
),
),
),
);
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
void registerNewUser(BuildContext context) async {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context)
{
return ProgressDialog(message: "Signing In , please wait....",);
});
final User firebaseUser = (await _firebaseAuth
.createUserWithEmailAndPassword(
email: emailTextEditingController.text,
password: passwordTextEditingController.text)
.catchError((errMsg){
Navigator.pop(context);
displayToastMessage("Error:"+errMsg.toString(), context);
})
)
.user;
if (firebaseUser != null) //user has been created
{
Map userDataMap = {
"name": nameTextEditingController.text.trim(),
"email": emailTextEditingController.text.trim(),
"phone": phoneTextEditingController.text.trim(),
};
usersRef.child(firebaseUser.uid).set(userDataMap);
displayToastMessage("Welcome to Yatra. Book ride as you like", context);
Navigator.pushNamedAndRemoveUntil(
context, MainScreen.idscreen, (route) => false);
} else {
Navigator.pop(context);
//if error display messages
displayToastMessage("UserAccount hasn't been Created", context);
}
}
}
displayToastMessage(String message, BuildContext context)
{
Fluttertoast.showToast(msg: message);
}
I came across the sendEmailVerification();我遇到了 sendEmailVerification(); method provided by firebase_auth package, but need some advice on setting it up.
firebase_auth package 提供的方法,但需要一些关于设置的建议。 Does anyone have a working code example to follow?
有没有人可以遵循的工作代码示例?
You can implement this in two steps:您可以分两步实现:
Sending verification mail:发送验证邮件:
void registerNewUser(BuildContext context) async {
... //Your existing code for creating the new user
if (firebaseUser != null) {
Map userDataMap = {
"name": nameTextEditingController.text.trim(),
"email": emailTextEditingController.text.trim(),
"phone": phoneTextEditingController.text.trim(),
};
usersRef.child(firebaseUser.uid).set(userDataMap);
await firebaseUser.sendEmailVerification();
await handleUserEmailVerification(context, user: firebaseUser);
}
... //Rest of your code
}
Checking if the user is verified检查用户是否通过验证
Future<void> handleUserEmailVerification(BuildContext context, {@required User user}) async {
if (user.isEmailVerified) {
// Navigate the user into the app
} else {
// Tell the user to go verify their mail
}
}
You can also use this handleUserEmailVerification
method for sign-in.您还可以使用此
handleUserEmailVerification
方法进行登录。
Signing a user in登录用户
Future<void> signInUser(BuildContext context) async {
final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
User firebaseUser = await firebaseAuth
.signInWithEmailAndPassword(
email: loginEmailController.text,
password: loginPasswordController.text,
);
await handleUserEmailVerification(context, user: firebaseUser);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.