如何从Firebase Functions请求响应?

时间:2019-06-19 01:40:43

标签: c# typescript firebase unity3d google-cloud-functions

我是Firebase Functions and 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 个答案:

答案 0 :(得分:1)

您实际上是在将“标准” HTTP Cloud FunctionsHTTP Callable Cloud Functions混合在一起。

您的Cloud Function代码(“服务器代码”)是带有

的“标准” HTTP Cloud Functions代码。
... functions.https.onRequest((request, response) => {...})

您的Unity代码使用

调用HTTP可调用云函数时
var function = MyFirebaseFunctions.GetHttpsCallable("myFunction");

最好的方法是如下修改Cloud Function代码:

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

有关更多详细信息,请参见doc