向 firebase 函数发出请求,该函数需要从不带参数的 flutter 应用程序接收参数

问题描述 投票:0回答:1

这里我调用的是云函数

final result =
          await FirebaseFunctions.instance.httpsCallable('example').call(
        {
          'test1': 'test1',
          'test2': 'test2,
        },
      );

在 CF 中我打印了所有可能的字段


@functions_framework.http
def generate_post(request) -> https_fn.Response:
        # Print headers
    print("Headers:")
    for header, value in request.headers.items():
        print(f"{header}: {value}")

    # Print query parameters
    print("\nQuery Parameters:")
    for param, value in request.args.items():
        print(f"{param}: {value}")

    # Print form data
    print("\nForm Data:")
    for field, value in request.form.items():
        print(f"{field}: {value}")

    # Print JSON data
    data = request.get_json(silent=True)
    print("\nJSON Data:")
    print(data)

    # Print raw data
    print("\nRaw Data:")
    print(request.data.decode('utf-8'))
    logging.info(f"Request data: {request.data}")

**全部都是空的**

我用postman调用它,它成功读取了参数

这是我使用的依赖项

  cupertino_icons: ^1.0.6
  firebase_core: ^3.1.1
  firebase_auth: ^5.1.1
  cloud_firestore: ^5.0.2
  flutter_redux: ^0.10.0
  redux: ^5.0.0
  shared_preferences: ^2.2.3
  cloud_functions: ^5.0.3
  http: ^1.2.2

 flutter --version
Flutter 3.19.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ba39319843 (5 months ago) • 2024-03-07 15:22:21 -0600
Engine • revision 2e4ba9c6fb
Tools • Dart 3.3.1 • DevTools 2.31.1

有什么想法吗?

提前致谢

除了我所做的之外,我找不到其他方式来调用 firebase CF

flutter google-cloud-functions
1个回答
0
投票

您的客户端代码正在使用提供的 Firebase SDK 来实现可调用函数,但您的函数本身根本不是可调用函数 - 它是一个HTTP 函数。 它们彼此不兼容。

如果您想使用可调用函数,您的客户端和函数代码都需要匹配,如文档中所述。 这意味着您的 python 函数需要使用

@https_fn.on_call()
而不是
@functions_framework.http
进行注释,并且需要使用 Firebase CLI 进行部署。

如果您不想使用 Firebase 可调用函数,请忽略所有有关可调用函数的文档,仅使用 HTTP 类型函数。

© www.soinside.com 2019 - 2024. All rights reserved.