10

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

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

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

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

getRedirectResult вызов на второй странице в вю компоненте маршрутизатора «активировать» крюк:

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

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

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

+0

Привет, Вы нашли решение этой проблемы, кроме жесткого обновления? – user482594

+0

@ user482594 nope; Я перестал работать над этим, когда нашел это исправление. – hboo

+0

Я связался с командой поддержки firebase google об этом (case: 0-7351000018196), и они сказали, что это ожидаемое поведение. Wtf? Согласно им, чтобы вывести пользователей из приложения, которое первоначально подписалось с Facebook, для этого приложение должно использовать Facebook SDK. Это не огонь! – user482594

ответ

0

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

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

    // Do stuff. 

    this.authRedirected = true; // Mark redirected 
    }); 
Смежные вопросы