Android отправляет HTTP POST для запуска облачных функций с помощью модернизации

#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.