Здравствуйте!
Я использую firebase авторизацию в своем проекте
final user = SignInUserModel(
email: email,
password: password,
device: _deviceInfo.model,
fcmToken: _pushNotificationsService.fcmToken!,
);
final res = await _userService.signIn(user);
if (res.isFail) {
_toastr.error(res.errorMessage);
return;
}
final res2 = await _auth.signUpWithCustomToken(token: res.value!);
if (res2.isFail) {
_toastr.error(res2.errorMessage);
return;
}
На бэкенде вызывается функция, чтобы получить customToken
async signIn(user: UserInput): Promise<string> {
const db = admin.firestore();
try {
var userRecord = await admin.auth().getUserByEmail(user.email);
if (!userRecord) {
throw 'User or password is not valid'
}
await db.collection('users').doc(userRecord.uid).update({ lastSignedIn: Date() })
var customToken = await admin.auth().createCustomToken(userRecord.uid);
return customToken;
} catch (error) {
throw (error);
}
}
И вот тот самый проблемный subscription
void onInit() {
super.onInit();
subscribe(_auth.userChanges(), (User? u) async {
if (u == null) {
_userSubject.add(AppUser.anonym);
return;
}
final user = AppUser.fromFirebaseUser(u);
_userSubject.add(user);
});
}
Здесь я столкнулся со странной ошибкой. Первый раз я вошел в систему с электронной почтой admin.clima@gmail.com. Затем, через несколько минут, я снова вошел в систему с помощью user.clima@gmail.com и оставил ее до следующего дня. Однако когда я открыл приложение, сработал _auth.userChanges, и я снова увидел в блоке admin.clima@gmail.com. Теперь, по прошествии дня двух бездействия, Firebase всегда возвращает мне адрес admin.clima@gmail.com, хотя я вошел в систему под другим пользователем…