Флаттер: способ проверить один вид учетной записи Google? - PullRequest
1 голос
/ 04 мая 2019

Я создаю приложение в флаттере (последняя сборка) для студентов университета.У каждого учащегося есть свой собственный адрес электронной почты и пароль (например, s2170456@student.utwente.nl), который интегрирован в Google, поэтому каждый может видеть уведомления в Gmail.

Это также означает;Если вы хотите войти в систему с помощью Google, ваш studentEmail - вариант для этого.Я хочу реализовать функцию входа в 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')
}

Я хочу, чтобы это было возможно только для регистрации и входа в систему пользователя по электронной почте студента.

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Решение состоит в том, чтобы позволить любому войти в систему, но запретить пользователям использовать приложение, если они не используют университетскую почту

void handleUser(FirebaseUser user) {
  if(user.email==sXXXXXXX@student.utwente.nl) {
    // handle sign in and UI changes
  } else {
    print('The user is not allowed');
  }
}
0 голосов
/ 04 мая 2019

Вы можете использовать Google Sign в интеграции следующим образом.

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

Вызовите _handleSignIn () при нажатии кнопки входа в Google.

...