@panikev

Почему сохраняется последний пользователь?

Здравствуйте!
Я использую 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, хотя я вошел в систему под другим пользователем…
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы