【发布时间】:2020-02-04 08:24:48
【问题描述】:
我有一个 Flutter 应用程序,我正在尝试从 Braintree 获取客户端随机数。根据braintree documentation,我的云功能中有这个:
exports.getClientNonce = functions.https.onCall(async (data, context) => {
gateway.clientToken.generate({}, function (err, response) {
if (err) {
throw new functions.https.HttpsError('unknown', 'Error getting client nonce');
} else {
console.log(`token: ${response.clientToken}`);
return response.clientToken;
}
});
});
然后,在我的 Flutter 应用程序中调用该函数(同样,我正在关注 plugin says 的内容):
try {
HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
functionName: 'getClientNonce',
);
dynamic result = await callable.call({});
final value = result.data;
debugPrint('token: $value');
var data = await BraintreePayment().showDropIn(
nonce: value,
amount: '2.0',
enableGooglePay: false,
inSandbox: true);
print("Response of the payment $data");
} on CloudFunctionsException catch (e) {
debugPrint('An error occurred');
} catch (e) {
debugPrint('An error occurred');
}
}
我尝试更改云函数,使其仅返回一个随机数(函数一执行),并且我的 Flutter 应用程序正确接收该值(因此云函数通信正常)。在我的 Firebase 控制台中,我可以查看console.log 指定的客户端随机数。但是该函数由于某种原因无法返回实际的客户端随机数。 (应该是一些长度大于 2000 个字符的字符串哈希)
【问题讨论】:
-
首先要确保您的项目采用付费计划,因为在免费计划中您只能调用 Google 托管的服务。
标签: javascript node.js flutter google-cloud-functions braintree