Android отправляет HTTP POST для запуска облачных функций с помощью Retrofit - PullRequest
0 голосов
/ 15 марта 2019

У меня есть облачная функция, которая использует "context.auth.uid", и по причинам, связанным с синтаксическим анализом JSON, я хочу вызвать ее, используя Retrofit вместо API функций Firebase. Но я получаю эту ошибку, когда я пытаюсь так: Request has incorrect Content-Type. app/google-services.json. И я не знаю, как передать информацию аутентификации, которую передает 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 Ответ

1 голос
/ 15 марта 2019

Retrofit не знает, как вызывать вызываемые функции , как вы заявили в своем коде. У них есть специальный протокол , разработанный для использования с клиентским SDK Firebase.

Если вы хотите использовать клиентскую библиотеку HTTP для вызова облачных функций, вы должны вместо этого сделать функцию HTTP , а не вызываемую. Обратите внимание, что они объявлены по-разному. Один начинается с functions.https.onCall(), а другой с functions.https.onRequest().

...