Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS:Firebase电话验证在试飞中突然停止工作_Ios_Flutter_Firebase Authentication - Fatal编程技术网

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

IOS:Firebase电话验证在试飞中突然停止工作,ios,flutter,firebase-authentication,Ios,Flutter,Firebase Authentication,我正在开发一个使用Firebase电话号码认证(SMS OTP)的颤振应用程序。它在安卓系统上运行良好,但在iPhone上有问题。我正在用一个真正的设备进行测试。安装应用程序后,我可以多次使用电话号码登录。但过了一段时间,我无法使用相同的手机号码登录,它要求我正确地检查号码。sim卡在我测试的同一部手机上。在调试过程中,手机登录在模拟器或真实设备中不起作用,因此我很难解决这个问题。以前有人经历过这种奇怪的行为吗?我使用的是Flatter1.12.13+修补程序.9和firebase_auth 0

我正在开发一个使用Firebase电话号码认证(SMS OTP)的颤振应用程序。它在安卓系统上运行良好,但在iPhone上有问题。我正在用一个真正的设备进行测试。安装应用程序后,我可以多次使用电话号码登录。但过了一段时间,我无法使用相同的手机号码登录,它要求我正确地检查号码。sim卡在我测试的同一部手机上。在调试过程中,手机登录在模拟器或真实设备中不起作用,因此我很难解决这个问题。以前有人经历过这种奇怪的行为吗?我使用的是Flatter1.12.13+修补程序.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));}
\u验证电话号码(BuildContext上下文)异步{
final FirebaseAuth _auth=FirebaseAuth.instance;
等待_auth.verifyPhoneNumber(
电话号码:电话号码,
超时:持续时间(秒数:0),
验证完成:(authCredential)=>
_验证完成(authCredential、上下文),
验证失败:(authException)=>
_验证失败(authException,上下文),
codeAutoRetrievalTimeout:(验证ID)=>
_CodeAutometricevaltimeout(验证ID),
//发送SMS代码时调用
codeSent:(验证ID,[code])=>
_SMSCODESNT(验证ID,[代码]);}
_验证完成(AuthCredential AuthCredential、BuildContext上下文){
FirebaseAuth.instance.signInWithCredential(authCredential);
如果(!smsCodeSent)handleLogin(authCredential);}
_验证失败(AuthException AuthException,BuildContext上下文){
显示对话框(
上下文:上下文,
生成器:()=>AnimatedDialog(),//显示带有检查号码错误消息的diaglog框);}
_SMSCODESNT(字符串验证ID,列表代码){
smsCodeSent=true;
_SMS验证代码=验证ID;
smsOTPDialog(上下文)}
_codeAutoRetrievalTimeout(字符串验证ID){
//设置验证代码,以便我们可以使用它登录用户
_SMSVericationCode=verificationId;}
smsOTPDialog(构建上下文){
导航器.of(上下文).push(
_createRoute(userPhoneNumber,_SMS验证代码,_fullname.text));}

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


试试看。

Firebase提供了一些有关测试手机身份验证的指导。可能会有一些速率限制/垃圾邮件预防?我知道这就是问题所在,但每当我关闭应用程序时,它都会将我指向屏幕,在屏幕上我键入OTP,然后获得OTP。我不应该每次打开应用程序获取真实号码时都获得OTP。它可以在Androids上完美地工作,也就是说,它自己在没有OTP的情况下登录。知道为什么会发生这种情况吗?您可以添加检查身份验证的代码吗?您应该检查用户是否登录,然后发送身份验证请求。如果上面的代码在你的应用程序条目中,你应该检查一下用户的状态,看看他们是否已经注册了。我实际上正在管理这些事情。就像我说的,它在Android上运行良好。它检查并不会一次又一次地发送OTP。但是谢谢