IOS:Firebase 电话身份验证在试飞中突然停止工作

Posted

技术标签:

【中文标题】IOS:Firebase 电话身份验证在试飞中突然停止工作【英文标题】:IOS: Firebase Phone Authentication stops working suddenly in test flight 【发布时间】:2020-10-12 04:55:15 【问题描述】:

我正在开发一个使用 Firebase 电话号码身份验证 (SMS OTP) 的颤振应用程序。它在 android 上运行良好,但在 iPhone 上存在问题。我正在使用真实设备进行测试。安装应用程序后,我可以多次使用电话号码登录。但是一段时间后,我无法使用相同的手机号码登录,它要求我正确检查号码。 sim 在我正在测试的同一部手机上。手机登录在调试时无法在模拟器或真实设备中工作,因此我无法解决这个问题。有没有人经历过这种奇怪的行为?我正在使用颤振 1.12.13+hotfix.9 和 firebase_auth 0.15.3+1 版本。任何帮助,将不胜感激。谢谢。

_verifyPhoneNumber(BuildContext context) async 

final FirebaseAuth _auth = FirebaseAuth.instance;

await _auth.verifyPhoneNumber(
    phoneNumber: phoneNumber,
    timeout: Duration(seconds: 0),
    verificationCompleted: (authCredential) =>
        _verificationComplete(authCredential, context),
    verificationFailed: (authException) =>
        _verificationFailed(authException, context),
    codeAutoRetrievalTimeout: (verificationId) =>
        _codeAutoRetrievalTimeout(verificationId),
    // called when the SMS code is sent
    codeSent: (verificationId, [code]) =>
        _smsCodeSent(verificationId, [code])); 



_verificationComplete(AuthCredential authCredential, BuildContext context) 
FirebaseAuth.instance.signInWithCredential(authCredential);
if (!smsCodeSent) handleLogin(authCredential);



 _verificationFailed(AuthException authException, BuildContext context) 
showDialog(
  context: context,
  builder: (_) => AnimatedDialog(), // SHows diaglog box with check your number error message);



_smsCodeSent(String verificationId, List<int> code) 
smsCodeSent = true;
_smsVerificationCode = verificationId;
smsOTPDialog(context)  


 _codeAutoRetrievalTimeout(String verificationId) 
// set the verification code so that we can use it to log the user in
_smsVerificationCode = verificationId;

  smsOTPDialog(BuildContext context) 
Navigator.of(context).push(
    _createRoute(userPhoneNumber, _smsVerificationCode, _fullname.text));

【问题讨论】:

Firebase 提供了一些有关电话身份验证测试的指导。可能会有一些速率限制/垃圾邮件预防? firebase.google.com/docs/auth/android/… 【参考方案1】:

您应该在电话身份验证签名方法中设置您的号码作为测试电话号码。当 Firebase Auth 检测到您的电话号码重复呼叫服务时,它将阻止您的电话号码使用这些服务。他们标记它然后阻止它近4小时。对于每个电话号码,电话身份验证的速率限制为每小时 5 次左右。

尝试检查一下。

【讨论】:

我明白这就是问题所在,但每当我关闭应用程序时,它都会将我指向我输入 OTP 的屏幕,然后我会得到 OTP。每次打开应用程序以获取真实号码时,我都不应该获得 OTP。它在 Android 上完美运行,即它本身无需 OTP 即可登录。知道为什么会发生这种情况吗? 你能添加检查身份验证的代码吗? 你应该检查用户是否登录然后发送认证请求。如果上面的代码在您的应用程序条目中,您应该检查用户的状态并确定他们是否已经注册。 我实际上正在管理这些事情。就像我说的那样,它在 Android 上运行良好。它会检查并且不会一次又一次地发送 OTP。不过谢谢

以上是关于IOS:Firebase 电话身份验证在试飞中突然停止工作的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)

Firebase 电话身份验证失败

在 Firebase 电话身份验证上显示错误弹出窗口“出了点问题,请重试”

由于 Firebase 测试电话号码不起作用,应用商店拒绝了应用

iOS Firebase 身份验证域对用户可见

使用firebase电话身份验证验证失败