Подключение к облачной функции, работающей на эмуляторе из эмулятора Android в react native

#android #firebase #react-native #google-cloud-functions #firebase-tools

# #Android #firebase #react-native #google-cloud-функции #firebase-инструменты

Вопрос:

Я создаю приложение и использую firebase для серверной части. Я использовал react-native-firebase для использования firebase в моем приложении. Я разработал облачную функцию входа в систему

 exports.login = functions.https.onCall((data, context) => {
   console.log("data", data);
   console.log("context", context);
   return "Login successful";
});
 

При запуске npm run serve в папке functions я получаю эти конфигурации в своей консоли.
Вывод на консоль после запуска npm run serve внутри папки функций для firebase

Также я добавил следующий код для подключения к облачной функции из моего Android-эмулятора, на котором запущено приложение.

 import functions from "@react-native-firebase/functions"
const [email, setEmail] = useState("");
    const [password, setPassword] = useState("");
    const handleLogin = () => {
        // console.log(email, password);
        functions()
            .useFunctionsEmulator("URL")
            .httpsCallable("login")({ email, password })
            .then((response) => {
                alert(response);
            });
    }
 

для URL-адреса, который я пробовал «http://localhost:5001 /» поскольку это порт, на котором прослушивается эмулятор функций
, порт, на котором прослушиваются облачные функции. Но при запуске приложения я получаю эту
ошибку при нажатии кнопки входа в консоль приложения
. Я попытался найти ошибку, но ничего подходящего не появилось. Любая помощь будет оценена.

Это мои облачные функции, которые я определил

 exports.helloWorld = functions.https.onRequest((request, response) => {
   functions.logger.info("Hello logs!", { structuredData: true });
   response.send("Hello from Firebase!");
});

exports.signup = functions.https.onRequest((request, response) => {
   console.log("request", request);
   response.send("SignUp successfull");
});

exports.login = functions.https.onCall((data, context) => {
   console.log("data", data);
   console.log("context", context);
   return "SignIn successfull";
});
 

Ответ №1:

Наконец-то я смог с этим разобраться

 const handleLogin = async () => {
        functions().useFunctionsEmulator("http://localhost:5001")
        const response = await functions().httpsCallable("login")({ email, password });
        console.log("response", response);
    }
 

Это весь код, необходимый для успешного локального вызова облачной функции внутри эмулятора из вашего запущенного эмулятора Android.