首页 > 解决方案 > 从 Flutter App 接收 Python Cloud Function 中的变量

问题描述

我正在尝试通过 http 触发器将变量从我的颤振应用程序发送到谷歌云函数上的 python 脚本。

我可以成功触发函数,但我的函数没有接收到变量。

这是我的相关应用代码:

  callCloudFunction() async {
    final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
      functionName: 'testPath',
    );
    dynamic resp = await callable.call(<String, dynamic>{
      'uid': uid,
    }).catchError((onError) {
      //Handle your error here if the function failed

    });
  }

这是我来自云函数的相关 python 代码:

def main(request):
    name = 'empty'
    request_args = request.args
    request_json = request.get_json(silent=True)
    if request_json and 'uid' in request_json:
        name = request_json['uid']
    elif request_args and 'uid' in request_args:
        name = request_args['uid']
    print(name)

没有问题触发该功能。它还有其他我没有在这里展示的功能,所以我可以确认触发器工作正常。它只是传递了那个不起作用的变量“uid”。

标签: pythonhttpfluttergoogle-cloud-functions

解决方案


您正在使用 Firebase SDK for Cloud Functions 调用可调用函数,但您的 python 函数只是一个常规 HTTP 函数。如果不实现SDK 用于与函数通信的协议,这将无法工作。仅在使用 Firebase CLI 部署时为 nodejs 提供对可调用对象的后端支持。

如果您只是从客户端发出普通的 HTTP 请求,而不是编写协议所需的所有代码,这可能会更容易。


推荐阅读