#android #firebase #http #retrofit #google-cloud-functions
#Android #firebase #http #модернизация #google-cloud-функции
Вопрос:
У меня есть облачная функция, которая использует «context.auth.uid», и по соображениям синтаксического анализа JSON я хочу запустить ее с помощью модернизации вместо Firebase functions API. Но я получаю эту ошибку, когда пытаюсь so: Request has incorrect Content-Type. app/google-services.json
. И я не знаю, как передать информацию об аутентификации, которую передает function API. Итак, вот мои коды:
Облачные функции HTTP-функция:
exports.getMatches = functions.https.onCall((req, context) => {
var uid = context.auth.uid;
console.log("uid: ", uid);
});
Интерфейс Android SearchAPI для модернизации
public interface ElasticSearchAPI
{
@POST("getMatches/")
Call<ElasticHitsObject> getMatches(@Header("Content-Type") String
content_type,@Header("Authorization") String secretKey);
}
Android вызывает функцию
Call<ElasticHitsObject> call = searchAPI.getMatches("app/google-services.json","api_key");
Ответ №1:
Retrofit не знает, как вызывать вызываемые функции, как вы объявили в своем коде. У них есть специальный протокол, разработанный для использования с Firebase client SDK.
Если вы хотите использовать клиентскую библиотеку HTTP для вызова облачных функций, вам следует вместо этого создать HTTP-функцию, а не вызываемую. Обратите внимание, что они объявлены по-разному. Один начинается с functions.https.onCall()
, а другой с functions.https.onRequest()
.
Комментарии:
1. Это звучит как другой вопрос для публикации в Stack Overflow.