如何从Firebase Functions请求响应?

cwtwac6a  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(210)

我是Firebase Functions和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只会说不。有经验的人能告诉我我做错了什么吗?

ddrv8njm

ddrv8njm1#

实际上,您将“标准”HTTP Cloud FunctionsHTTP Callable Cloud Functions混淆了。
您的云函数代码(“服务器代码”)是“标准”HTTP云函数代码,其中

... 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以了解更多详细信息。

相关问题