Экспо клиент + Firebase javascript SDK аутентификация - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался разработать приложение с Expo Client + Firebase Javascript SDK. Я использую избыточность (redux-thunk) для управления состоянием. Однако у меня возникают некоторые проблемы с аутентификацией пользователя, потому что при каждом вызове Firebase, который я делаю, он просто запускается, если я принудительно перезагружаю приложение или когда я нажимаю куда-либо.

import { Alert } from "react-native";
import { Actions } from "react-native-router-flux";
import {
  LOGIN,
  LOGIN_FAIL,
  LOGIN_SUCCESS,  
} from "./types";
import { FirebaseService } from "../services";
import i18n from "../i18n";
import * as Facebook from "expo-facebook";
import * as Google from "expo-google-app-auth";

export const login = (email, password) => {
  return (dispatch) => {
    console.log(email);
    console.log(password);

    dispatch({ type: LOGIN });

    FirebaseService.signIn(email, password)
      .then((user) => {
        dispatch({ type: LOGIN_SUCCESS, payload: user });
        Actions.tabbar();
      })
      .catch((error) => {
        dispatch({ type: LOGIN_FAIL });
        if (error) {
          Alert.alert(
            i18n.t("app.attention"),
            i18n.t("login.enter.message"),
            [{ text: i18n.t("app.ok") }],
            { cancelable: true }
          );
        }
      });
  };

Я вызывал этого создателя действия, когда нажата кнопка, и FirebaseService.signIn (электронная почта, пароль) имеет значение

static async signIn(email, password) {
    return await firebase.auth().signInWithEmailAndPassword(email, password);
  }

firebase была инициализирована с правильными учетными данными. Чтобы быть более понятным, отправка ({тип: LOGIN_SUCCESS, полезная нагрузка: пользователь}); будет отправлено, только если я коснусь экрана в любом месте или если я вызову горячую перезагрузку. В противном случае ничего не происходит, и приложение остается в режиме ожидания. Есть ли у вас какие-либо понятия, что это может быть?

Я запускаю его в Iphone через Expo Client.

...