React native - как проверить пользователя firebase при запуске приложения? - PullRequest
0 голосов
/ 07 августа 2020

Когда пользователь успешно входит в приложение user firebase username / password auth function. Я сохраняю зарегистрированного пользователя в asyncstorage телефона.

const user = await firebase
   .auth()
   .signInWithEmailAndPassword(this.state.email, this.state.password);

this.props.signInUser(user);

await AsyncStorage.setItem("user", JSON.stringify(user));

Тогда firebase.auth().currentUser установлен правильно.

Однако, когда я перезагружаю приложение, я получаю пользователя из asyncStorage.

В моих проектах root Приложение. js:

useEffect(() => {
    setTimeout(async () => {
      let user;
      user = null;

      try {
        user = await AsyncStorage.getItem("user");
      } catch (e) {
        console.log(e);
      }

      if (user) {
        const parsedUser = JSON.parse(user);

        // DO I NEED TO VALIDATE THIS SAVED USER TO FIREBASE?
        // HOW DO I DO THIS?

        store.dispatch({ type: "RETRIEVE_TOKEN", user: parsedUser });
      } else {
        store.dispatch({ type: "SHOW_LOGIN" });
      }
    }, 1000);
  }, []);

Это не устанавливает firebase.auth (). CurrentUser ... Это необходимо?

Я пробовал войти в систему с помощью функции if (user) {}. Но это не устанавливает firebase.auth (). CurrentUser. Также я получаю сообщение об ошибке: [Error: The custom token format is incorrect. Please check the documentation.].

if (user) {
        const parsedUser = JSON.parse(user);

        firebase
          .auth()
          .signInWithCustomToken(parsedUser.user.stsTokenManager.accessToken)
          .catch(function (e) {
            console.log(e);
          });

        console.log(firebase.auth().currentUser);

        store.dispatch({ type: "RETRIEVE_TOKEN", user: parsedUser });
      }

Любая помощь приветствуется.

...