React-Native Firebase: обновление токена не работает - PullRequest
0 голосов
/ 03 мая 2019

У меня есть проблема с реагирующим-firebase (или firebase), из-за которой мое приложение не получает триггер после обновления токена аутентификации. Это в значительной степени та же проблема, что и [1], но они так и не опубликовали решение.

Итак, что происходит, так это то, что как на телефоне Android, так и на эмуляторе Android (без понятия о iOS), регистрация, вход в систему и выход из нее работают отлично, то есть слушатели правильно видят, когда я делаю logout() и т. Д. Но слушатели никогда не срабатывают при обновлении токена.

Мой первый вопрос: правильно ли я предположить, что onIdTokenChanged -листер должен автоматически срабатывать через 60 минут без необходимости делать что-либо еще, например, вызвать любую функцию firebase, такую, чтобы приложение просто сидело без дела в течение 60 минут, а затем получило событие и заменило токен?

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

class ReduxAppWrapper extends Component {

  componentDidMount() {
    firebase.auth().onAuthStateChanged((user) => {
        console.log('COMP DID MOUNT: AUTH STATE CHANGED! ' + JSON.stringify(user));
    });
    firebase.auth().onIdTokenChanged((user) => {
        console.log('COMP DID MOUNT: TOKEN CHANGED! ' + JSON.stringify(user));
    });
    firebase.auth().onUserChanged((user) => {
        console.log('COMP DID MOUNT: USER CHANGED! ' + JSON.stringify(user));
    });
  };

  render() {
    return (
      <ReduxProvider store={store}>
        <MenuProvider>
          <PaperProvider>
            <AppContainer />
          </PaperProvider>
        </MenuProvider>
      </ReduxProvider>);
  }
}

Обычно внутри слушателя у меня есть функция, которая отправляет избыточное действие так, чтобы информация аутентификации передавалась по моим компонентам. Внутри этих компонентов я использую токен jwt для http-запросов к своему бэкэнду.

Теперь бэкэнд, конечно, использует firebase для проверки этого токена (и именно здесь проблема возникает через 60 минут после получения устаревшего jwt), но я думаю, что я прав, предполагая, что проблема лежит в приложении, поскольку обновление не происходит.

Я был бы очень рад, если бы кто-то мог указать мне, где искать, я также попытался выяснить в консоли Firebase, было ли отправлено событие обновления токена, но я не смог ничего найти об этом.

Так в основном:

1) Правильно ли я предполагаю, что функция firebase.auth().onIdTokenChanged() должна вызываться без каких-либо других действий? Или недостаточно определить слушателя один раз в главном компоненте (также учитывая тот факт, что другие экраны будут визуализироваться поверх этого из-за стека-навигации).

2) Если код в порядке, есть ли у вас какие-либо подсказки, где искать?

Большое спасибо!

[1] https://github.com/invertase/react-native-firebase/issues/531

...