Как мне запросить ответ у Firebase Functions? - PullRequest
0 голосов
/ 19 июня 2019

Я новичок в Firebase Функции и TypeScript. Я пытаюсь сделать запрос от клиента (Unity и C #) к серверу (Firebase Functions и TypeScript).

В журналах моего сервера указан код состояния 200 без предупреждений или ошибок. Однако, когда я получаю ответ, он дает сбой.

Код клиента:

public void CallServer(UnityAction<string> callback)
{
    var function = MyFirebaseFunctions.GetHttpsCallable("myFunction");
    function.CallAsync().ContinueWith((response) =>
    {
        if (response.IsFaulted)
        {
            Debug.LogError("Fault!"); //Faults every time
        }
        else
        {
            string answer = response.Result.Data.ToString();
            Debug.Log(answer);
            callback(answer);
        }
    });
}

Код сервера:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp();

export const myFunction = functions.https.onRequest((request, response) =>
{
    response.send('{json:here}');
});

Я не знаю, почему это так, и я не знаю, как найти дополнительную информацию. Если я пытаюсь отладить response, моя IDE просто говорит «нет». Может кто-нибудь с большим опытом объяснить мне, что я делаю неправильно?

1 Ответ

1 голос
/ 19 июня 2019

Вы фактически смешиваете "стандартные" функции облака HTTP с функциями вызываемого облака HTTP .

Ваш код функции облака ("Код сервера") равен "стандартный код «Облачные функции HTTP», с

... functions.https.onRequest((request, response) => {...})

Пока ваш код Unity вызывает функцию вызываемого облака HTTP, с

var function = MyFirebaseFunctions.GetHttpsCallable("myFunction");

Лучший способ - адаптировать облакоКод функции выглядит следующим образом:

export const myFunction = functions.https.onCall((data, context) => {
    return {foo: 'bar'};
});

Подробнее см. doc .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...