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 = '/'});
Ответы
Ответ 1
Используйте флаг, чтобы определить, была ли обработана getRedirectResult()
. то есть.
firebase.auth().getRedirectResult()
.then((result) => {
return result.user;
}).then((user) => {
if (this.authRedirected)
return; // Skip
// Do stuff.
this.authRedirected = true; // Mark redirected
});