Flutter:验证一种 google 帐户的方法?
Flutter: way to validate one sort of google account?
我正在为大学学生构建一个 flutter 应用程序(最新版本)。每个学生都有自己的电子邮箱和密码(例如 s2170456@student.utwente.nl),它们集成在 google 中,因此每个人都可以在 Gmail 中看到通知。
这也意味着;如果您想使用 google 登录,您的学生邮箱是一个选项。我想实现一个 google 登录功能,只有大学的学生(他们的电子邮件为 sXXXXXXX@student.utwente.nl)才能登录。
我的问题是:有没有办法过滤 google 登录电子邮件?我考虑过使用普通电子邮件登录并使用 RegEx 进行验证,但这意味着学生应该首先注册。我想跳过整个注册过程,让学生使用他们已经拥有的学生电子邮件进行登录。
它应该看起来像这样(如果可能的话)VV
Widget googleLogin () {
googleLogin button()
if(googlelogin.email == sXXXXXXX@student.utwente.nl)
log user in;
} else {
return error message('invalid email')
}
我希望它只能使用学生邮箱注册和登录用户。
您可以像这样使用 google 登录集成。
GoogleSignInAccount _currentUser;
然后处于初始状态:-
@override
void initState() {
super.initState();
_googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
setState(() {
_currentUser = account;
print("User Name ${_currentUser.displayName}");
print("User Email ${_currentUser.email}");
});
if (_currentUser != null) {
var socialData = SocialData(
_currentUser.displayName, "", _currentUser.email, LoginType.GOOGLE);
_startHomeScreen(socialData);
} else {
_showError('Error, Please try again later');
}
});
}
成功登录后,将执行:-
_startHomeScreen(SocialData data) {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return Home(socialData: data);
}));
}
Future<void> _handleSignIn() async {
try {
await _googleSignIn.signIn();
} catch (error) {
print(error);
}
}
单击 google 登录按钮时调用 _handleSignIn()。
解决方案是允许任何人登录但阻止用户使用该应用程序,除非他们使用大学邮件
void handleUser(FirebaseUser user) {
if(user.email==sXXXXXXX@student.utwente.nl) {
// handle sign in and UI changes
} else {
print('The user is not allowed');
}
}
我正在为大学学生构建一个 flutter 应用程序(最新版本)。每个学生都有自己的电子邮箱和密码(例如 s2170456@student.utwente.nl),它们集成在 google 中,因此每个人都可以在 Gmail 中看到通知。
这也意味着;如果您想使用 google 登录,您的学生邮箱是一个选项。我想实现一个 google 登录功能,只有大学的学生(他们的电子邮件为 sXXXXXXX@student.utwente.nl)才能登录。
我的问题是:有没有办法过滤 google 登录电子邮件?我考虑过使用普通电子邮件登录并使用 RegEx 进行验证,但这意味着学生应该首先注册。我想跳过整个注册过程,让学生使用他们已经拥有的学生电子邮件进行登录。
它应该看起来像这样(如果可能的话)VV
Widget googleLogin () {
googleLogin button()
if(googlelogin.email == sXXXXXXX@student.utwente.nl)
log user in;
} else {
return error message('invalid email')
}
我希望它只能使用学生邮箱注册和登录用户。
您可以像这样使用 google 登录集成。
GoogleSignInAccount _currentUser;
然后处于初始状态:-
@override
void initState() {
super.initState();
_googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
setState(() {
_currentUser = account;
print("User Name ${_currentUser.displayName}");
print("User Email ${_currentUser.email}");
});
if (_currentUser != null) {
var socialData = SocialData(
_currentUser.displayName, "", _currentUser.email, LoginType.GOOGLE);
_startHomeScreen(socialData);
} else {
_showError('Error, Please try again later');
}
});
}
成功登录后,将执行:-
_startHomeScreen(SocialData data) {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return Home(socialData: data);
}));
}
Future<void> _handleSignIn() async {
try {
await _googleSignIn.signIn();
} catch (error) {
print(error);
}
}
单击 google 登录按钮时调用 _handleSignIn()。
解决方案是允许任何人登录但阻止用户使用该应用程序,除非他们使用大学邮件
void handleUser(FirebaseUser user) {
if(user.email==sXXXXXXX@student.utwente.nl) {
// handle sign in and UI changes
} else {
print('The user is not allowed');
}
}