【发布时间】:2021-05-17 02:13:33
【问题描述】:
我遇到了一个奇怪的问题,即某些电话号码在没有收到任何错误的情况下没有收到 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) {},
);
}
【问题讨论】:
-
你发现了吗?我正在考虑将我的手机身份验证更改为电子邮件和密码身份验证。
标签: firebase flutter firebase-authentication