我有一个使用云功能的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函数调用。
要做到这一点,请执行以下步骤:
- 转到谷歌云控制台:
https://console.cloud.google.com/functions/?_ga=2.146762295.2040134096.1694704760-1196519054.1673428422&_gac=1.253897338.1694704907.CjwKCAjw3oqoBhAjEiwA_UaLtj6FwIgtn0m3gm-qTtruv9QegSx6EkctQWGsJlYrHXhTZwyWG7ns-xoCwDQQAvD_BwE
-
单击接收功能旁边的复选框。(不要点击功能本身。(
-
单击屏幕顶部的"权限"。将打开"权限"面板。
-
单击"添加主体"。
-
在"新建主体"字段中,输入调用函数的标识。这应该是一封服务帐户电子邮件。(或所有(已验证(用户,取决于您的情况(
-
选择角色Cloud Functions>云函数调用程序。
-
单击"保存"。