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');
  }
}