【问题标题】:How do I request a response from Firebase Functions?如何请求 Firebase Functions 的响应?
【发布时间】:2019-06-19 01:40:43
【问题描述】:

我是 Firebase 函数和 TypeScript 的新手。我正在尝试从客户端(Unity 和 C#)向服务器(Firebase 函数和 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 只会说不。有更多经验的人可以向我解释我做错了什么吗?

【问题讨论】:

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


    【解决方案1】:

    您实际上是在混淆“标准”HTTP Cloud Functions 和 HTTP 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。

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 2019-06-09
      • 2017-06-20
      • 2018-08-13
      相关资源
      最近更新 更多