Локальный запуск облачной функции из эмулятора

Я успешно запускаю локальную облачную функцию от почтальона с этим URL-адресом:

http://127.0.0.1:5001/spotnik-7de37/us-central1/getUsers

Но в моем приложении используется:

val functions = Firebase.functions
functions.useEmulator("10.0.2.2", 5001)
functions.getHttpsCallable("http://127.0.0.1:5001/spotnik-7de37/us-central1/getUsers")

Я получил: Ошибка com.google.firebase.functions.FirebaseFunctionsException: ВНУТРЕННЯЯ

2
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Необходимо использовать протокол HTTPS, а не HTTP. См. https://firebase.google.com/docs/emulator-suite/connect_functions

Настройте свое приложение для эмуляции функций HTTPS Каждая функция HTTPS в вашем коде будет обслуживаться из локального эмулятора с использованием следующий формат URL:

http://$HOST:$PORT/$PROJECT/$REGION/$NAME

Например, простая функция helloWorld с портом хоста по умолчанию. и регион будет обслуживаться по адресу:

https://localhost:5001/$PROJECT/us-central1/helloWorld

Проблема осталась, все равно выдает ошибку. От почтальона мне удалось http

Dim 13.02.2023 22:26

Смотрите другой ответ, в `functions.useEmulator("10.0.2.2", 5001) `измените порт на 127.0.0.1, попробуйте?

tgkprog 14.02.2023 05:51
Ответ принят как подходящий

Взгляните на Функции вызова из вашего приложения. Просто используйте имя функции для вызова getHttpsCallable():

private Task<String> addMessage(String text) {
  // Create the arguments to the callable function.
  Map<String, Object> data = new HashMap<>();
  data.put("text", text);
  data.put("push", true);

  return mFunctions
    .getHttpsCallable("addMessage")
    .call(data)
    .continueWith(new Continuation<HttpsCallableResult, String>() {
        @Override
        public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
            // This continuation runs on either success or failure, but if the task
            // has failed then getResult() will throw an Exception which will be
            // propagated down.
            String result = (String) task.getResult().getData();
            return result;
        }
    });
}

В вашем случае я мог бы попробовать приведенный выше пример, используя:

httpsCallable('spotnik-7de37')

Или используйте это:

getHttpsCallableFromUrl("http://127.0.0.1:5001/spotnik-7de37/us-central1/getUsers")

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

functions.useEmulator("127.0.0.1", 5001);

Кроме того, если вы хотите использовать всю строку URL-адреса для вызова, вы можете использовать getHttpsCallableFromUrl.

val functions = Firebase.functions functions.useEmulator("127.0.0.1", 5001) functions.getHttpsCallable("127.0.0.1:5001/spotnik-7de37/us-‌​central1/getUsers") Все та же ошибка

Dim 16.02.2023 07:38

Попробуйте просто spotnik-7de37 или используйте getHttpsCallableFromUrl. Пересмотрел ответ, чтобы включить это.

Wesley LeMahieu 16.02.2023 16:05

Другие вопросы по теме