【发布时间】:2021-09-21 06:31:35
【问题描述】:
我正在尝试使用 Cloud Function 和 Twilio 实现验证。 Twilio 工作正常,并且发送了带有代码的 SMS,但在 Flutter 应用程序中我收到错误 [firebase_functions/deadline-exceeded] DEADLINE_EXCEEDE。我做错了什么?
云功能:
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);
exports.sendSms = (req, res) => {
console.log('start sendSms');
var func = client.verify.services('xxxxx')
.verifications
.create({to: req.body.data.phone, channel: 'sms'})
.then(verification => {return verification})
.then(result => {
if (result.status === 'pending')
return {status: 'success', result: "pending"};
else
return {status: 'error', error_code: -1, error_msg: result.status};
})
.catch(e => {
return {status: 'error', error_code: e.code, error_msg: e.message};
});
return Promise.all([func]).then(result => {
console.log(result); // console output [ { status: 'success', result: 'pending' } ]
return result[0];
});
};
颤动:
HttpsCallable callable = FirebaseFunctions.instanceFor(region: 'europe-west3').httpsCallable(
'send-sms',
options: HttpsCallableOptions(timeout: const Duration(seconds: 10))
);
dynamic results = await callable.call(<String, dynamic>{'phone': phoneNumber});
【问题讨论】:
-
我在 Cloud 函数中看到了 Firestore 的此错误,但我在这里看不到任何与 Firestore 相关的代码。您是否在完整代码中偶然使用了 Firestore?
-
@Dharmaraj Firestore 已在应用程序中使用,但不在此场景中。错误恰好发生在调用“动态结果 = await callable.call (
{'phone': phoneNumber});”的地方。并且云端功能代码完整。 -
那个功能完成了吗?如果不能,请分享您的完整代码并分享您的 Firebase 功能版本。我会尝试复制这个问题。
-
@Dharmaraj 感谢您愿意提供帮助。功能代码完整,只是服务标识替换为“xxxxx”,可惜出于安全原因无法提供原版。
-
你累了吗
return res.send("some data");你错过了完成响应,这不是关闭req-res周期。从而导致逾期。尝试return res.send(result[0]);而不是return result[0];
标签: firebase flutter google-cloud-functions