如何在Flutter中调用可调用的v2云函数



我有一个使用云功能的Flutter应用程序。我将一个功能升级为v2功能,但它不再工作。找不到函数。函数日志没有显示它正在被调用。它位于us-central1区域,项目的其余部分也是如此。

final result = await FirebaseFunctions.instance.httpsCallable('addMessage').call();

我尝试了firebase控制台中的全功能URL,而不是addMessage,但也不起作用。

功能声明:

exports.addMessage = onCall(async (request) => {
//Run function
});

如何在flutter中调用v2云函数?

结论:到目前为止,您无法使用fluttercloud_functions包调用v2云函数。您必须使用对完整功能URL的常规http请求(cloud_functions包不支持使用完整URL(。您可以使用darthttp包来执行此操作,手动处理请求和响应。

使用cloud_functions版本4.1.0,现在可以调用第二代云功能:

FirebaseFunctions.instance
.httpsCallableFromUrl("https://example.run.app/")
.call({"paramter": "value"});

请注意,在知道URL是什么之前,您需要部署该功能。这将在未来根据文档进行更改:

https://cloud.google.com/functions/docs/tutorials/http#triggering_the_function

对我来说,我无法运行该函数的原因是我没有为所有(已验证(用户验证该函数,如下所示:https://cloud.google.com/functions/docs/securing/authenticating.问题是默认情况下不允许v2函数调用。

要做到这一点,请执行以下步骤:

  1. 转到谷歌云控制台:

https://console.cloud.google.com/functions/?_ga=2.146762295.2040134096.1694704760-1196519054.1673428422&amp_gac=1.253897338.1694704907.CjwKCAjw3oqoBhAjEiwA_UaLtj6FwIgtn0m3gm-qTtruv9QegSx6EkctQWGsJlYrHXhTZwyWG7ns-xoCwDQQAvD_BwE

  1. 单击接收功能旁边的复选框。(不要点击功能本身。(

  2. 单击屏幕顶部的"权限"。将打开"权限"面板。

  3. 单击"添加主体"。

  4. 在"新建主体"字段中,输入调用函数的标识。这应该是一封服务帐户电子邮件。(或所有(已验证(用户,取决于您的情况(

  5. 选择角色Cloud Functions>云函数调用程序

  6. 单击"保存"。

最新更新