Я использую предустановленную Firebaseui от Google для аутентификации в приложении create-реагировать.
У меня есть функция onAuthStateChanged, установленная в componentDidMount.
componentDidMount() {
firebase.auth().onAuthStateChanged((user) => {
console.log('Auth state changed');
console.log('user: ',user);
if (user) {
this.setState({user: user});
} else {
this.setState({user: null});
}
});
}
Я использую this.state.user
в render
, чтобы показать различные элементы пользовательского интерфейса в зависимости от того, вошли они или нет. Я также регистрирую currentUser:
render() {
console.log('render currentUser: ',firebase.auth().currentUser);
...
Вот что происходит, когда я пытаюсь войти в систему с помощью firebaseui:
1) Нажмите кнопку Log In , которая отображает FirebaseUI.
2) Выберите Войти через Google
3) Страница перенаправляется на страницу авторизации Google, затем перенаправляется обратно в мое приложение
4) После перезагрузки я вижу следующие журналы консоли:
render currentUser: null
Auth state changed
user: null
render currentUser: null
5) Снова нажмите кнопку Log
6) FirebaseUI показывает пустое окно с индикатором загрузки вверху, затем закрывается. Перенаправления нет.
7) Консольный вывод:
render currentUser: null
Auth state change
user: {firebase user object...}
render currentUser: {firebase user object...}
Это похоже на то, что Firebase где-то хранит информацию об аутентификации, но не загружается при загрузке приложения. Как я могу заставить Firebase распознать, что пользователь вошел в систему при первой перезагрузке страницы?