#flutter #google-signin
Вопрос:
Я тестирую вход в Google с помощью двух учетных записей Google, скажем aaa@gmail.com и bbb@gmail.com.
Проблема: Даже когда я вхожу в систему с bbb@gmail.com, uid возвращает строку uid для aaa@gmail.com.
Это мой код для входа и выхода.
GoogleSignIn? _googleSignIn; GoogleSignInAccount? _googleUser; GoogleSignInAuthentication? _googleAuth; OAuthCredential? _credential; UserCredential? _userCredential; UserCredential? get userCredential =gt; _userCredential; Futurelt;voidgt; signIn() async { _googleSignIn = await GoogleSignIn(); _googleUser = await _googleSignIn!.signIn(); print(_googleUser); // Obtain the auth details from the request _googleAuth = await _googleUser!.authentication; // Create a new credential _credential = GoogleAuthProvider.credential( accessToken: _googleAuth!.accessToken, idToken: _googleAuth!.idToken, ); _userCredential = await FirebaseAuth.instance.signInWithCredential(_credential!); print(_userCredential); } void signOut(BuildContext context) async { if(_googleSignIn != null) await _googleSignIn!.signOut(); await FirebaseAuth.instance.signOut(); }
Когда я войду в систему с bbb@gmail.com, он печатает правильные учетные данные пользователя (в поле электронной почты указано bbb@gmail.com).
Но когда я вызываю AuthService после входа в систему для получения данных профиля пользователя, он печатает идентификатор пользователя aaa@gmail.com.
Это код для печати идентификатора пользователя.
class UserProfileService { static final UserProfileService _instance = UserProfileService._internal(); factory UserProfileService() =gt; _instance; late final String _uid; late final firebase_storage.Reference _storage; late final DatabaseReference _database; UserProfileService._internal() { _uid = FirebaseAuth.instance.currentUser!.uid; _database = FirebaseDatabase.instance.reference().child('/users/$_uid'); _storage = firebase_storage.FirebaseStorage.instance.ref('profile-photo/$_uid.png'); } Futurelt;boolgt; checkFirstLogin() async { bool _check = true; print('check first login'); print('uid: $_uid'); // this code await (_database.get().then((snapshot) { if (snapshot.value == null) { print(snapshot.value); _check = true; } else { print(snapshot.value); _check = false; } })); return _check; } }
Когда я заглядываю в раздел аутентификации моей консоли firebase, там есть отдельная сущность для идентификатора aaa@gmail.com и bbb@gmail.com. bbb@gmail.com имеет свой собственный uid. Я понятия не имею, почему учетные данные для bbb@gmail.com ведет к пользователю aaa@gmail.com.
У кого-нибудь был подобный опыт использования нескольких учетных записей Google в одном эмуляторе?