我正面临着一个奇怪的问题,一些电话号码在没有接收到任何错误的情况下无法接收OTP,只是什么都没有发生。除了极少数用户之外,几乎所有的用户都能很好地接收OTP。我如何调试这个问题?Firebase Auth是否有一些包含错误的日志?我的代码是否遗漏了什么?
下面是发送OTP的代码(在Flutter中)
sendOtp(String number, BuildContext context) async {
print("Sending OTp");
state = ViewState.Busy;
await auth.verifyPhoneNumber(
phoneNumber: '+966$number',
timeout: Duration(seconds: 30),
verificationCompleted: (AuthCredential credential) {
print("Verified");
signInWCredential(credential, context, number);
},
verificationFailed: (FirebaseAuthException e) {
print("verification error code is: ${e.code}");
print("verification error message is: ${e.message}");
if (e.code == "too-many-requests") {
Dialogs.dialog(
context,
"${Localization.of(context).error}!",
Localization.of(context).tooManyOtpRequestsError,
Localization.of(context).ok,
isDoublePop: true)
.then((value) {
if (value == ConfirmAction.ACCEPT) {
Navigator.of(context).pop();
}
});
} else {
FirebaseCrashlytics.instance.recordError(e, StackTrace.current);
print("Error is: $e");
Dialogs.dialog(
context,
"${Localization.of(context).error}!",
Localization.of(context).errorSendingOtp,
Localization.of(context).ok,
isDoublePop: true);
}
},
codeSent: (String verificationId, [int resendToken]) {
print("Code sent");
print("verification ID is: $verificationId");
setVerificationId(verificationId);
print("Resend token is: $resendToken");
state = ViewState.Idle;
},
codeAutoRetrievalTimeout: (String verificationId) {},
);
}发布于 2021-04-26 16:57:54
我已联系GCP支持部门调查此问题。他们向我报告说,我的客户所在地区的短信投递成功率为85%-90%。他们正在与SMS提供商合作来解决这个问题。
我提出了一个新的功能请求,如果SMS传递失败,将返回错误消息。同时,我通过创建自己的自定义身份验证API并通过另一个服务提供商发送SMS解决了这个问题。
https://stackoverflow.com/questions/66186903
复制相似问题