Я пытался разработать приложение с 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.