[英]how do I verify a new user's email in Flutter and Firebase before granting them access to the app?
[英]How to add email verification in this flutter? I need to verify users before signing them 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);
}
我遇到了 sendEmailVerification(); firebase_auth package 提供的方法,但需要一些关于设置的建议。 有没有人可以遵循的工作代码示例?
您可以分两步实现:
发送验证邮件:
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
}
检查用户是否通过验证
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
}
}
您还可以使用此handleUserEmailVerification
方法进行登录。
登录用户
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.