Я успешно запускаю локальную облачную функцию от почтальона с этим 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: ВНУТРЕННЯЯ
Необходимо использовать протокол 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
Смотрите другой ответ, в `functions.useEmulator("10.0.2.2", 5001) `измените порт на 127.0.0.1, попробуйте?
Взгляните на Функции вызова из вашего приложения. Просто используйте имя функции для вызова 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") Все та же ошибка
Попробуйте просто spotnik-7de37
или используйте getHttpsCallableFromUrl
. Пересмотрел ответ, чтобы включить это.
Проблема осталась, все равно выдает ошибку. От почтальона мне удалось http