Подтвердить что ты не робот

Firebase getRedirectResult вызывается после выхода из системы

Я немного смущен некоторым поведением, которое я вижу с Firebase. Я никогда не использовал старую версию, но я считаю, что getRedirectResult является новым, поскольку они объединили усилия с Google.

У меня есть SPA, который я использую Vue.js с vue-router и Firebase for. Существует целевая страница, а затем другое представление, для которого пользователи могут войти в систему, или нет. Вход осуществляется путем перенаправления. Когда это второе представление загружается, я проверяю getRedirectResult на крюке "активировать" vue-router, а если есть пользователь, делайте некоторые другие вещи с информацией о пользователе.

Проблема продолжается так:
 1. Мы находимся на второй странице. Пользователь регистрируется. GetRedirectResult вызывается и находит пользователя. Yay.
 2. Пользователь выходит из системы. Мы вернулись на целевую страницу.
3. Мы нажимаем кнопку, которая ведет нас к второй странице. getRedirectResult вызывается и находит предыдущего пользователя. Какие?! Нет!

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

вызов getRedirectResult на второй странице в vue-компоненте маршрутизатора "активировать":
  

    firebase.auth().getRedirectResult()
        .then((result) => {
          return result.user;
        }).then((user) => {
          // Do stuff.
        });
    

Обновление: Решено, сделав жесткое обновление страницы в обратном вызове выхода, следующим образом:   

    firebase.auth().signOut()
        .then(() => {window.location.href = '/'});
    
4b9b3361

Ответ 1

Используйте флаг, чтобы определить, была ли обработана getRedirectResult(). то есть.

firebase.auth().getRedirectResult()
  .then((result) => {
    return result.user;
  }).then((user) => {
    if (this.authRedirected)
      return; // Skip

    // Do stuff.

    this.authRedirected = true; // Mark redirected
  });