如何从Flutter上的FirebaseFunctions向Firebase函数发送参数



我使用Firebase函数中的onRequest函数通过nodemailer发送电子邮件。

如果我在末尾以?senderName=Bob格式传入参数,那么在浏览器中使用https://请求测试函数效果非常好

在我的函数中,我使用req.query.senderName来检索变量。

当我使用Flutterfirecloud_functions dart插件时,我无法将变量传递给我的函数。以下是我的代码:

Future<void> sendEmail() async {
FirebaseFunctions functions = FirebaseFunctions.instance;
//TODO:remove when deployed
//functions.useFunctionsEmulator(origin: 'http://localhost:5001');
HttpsCallable callable = functions.httpsCallable('sendEmail');
try {
final HttpsCallableResult result = await callable.call(
{
'senderName': contactName,
},
);
print(result.data);
} on FirebaseFunctionsException catch (e) {
print('Firebase Functions Exception');
print(e.code);
print(e.message);
} catch (e) {
print('Caught Exception');
print(e);
}
}

我已经在firebase函数中记录了"req"的值,它返回以下行(为了清晰起见,删除了大多数行(

query: {},
...
body: { data: { senderName: 'Bob' } },
...

我的变量最终出现在"body"而不是"query"中,是不是做错了什么?或者这是一个错误?

不打算将onRequest类型的HTTP函数与使用可调用函数的Firebase SDK混合使用。可调用函数的SDK仅用于调用onCall类型的函数,如文档中所述。可调用函数函数有一个特殊的协议,SDK会向您隐藏所有这些细节。

如果你不想写onCall函数,而是需要使用onRequest,那么你不应该使用Firebase SDK来调用它。你应该使用Flutter的普通HTTP客户端。

相关内容

  • 没有找到相关文章

最新更新