颤抖的IOS-如何通过电话身份验证保持用户登录

时间:2020-06-23 14:17:15

标签: ios flutter firebase-authentication

我已使用电话身份验证通过firebase_auth对用户进行身份验证,并成功取回了Firebase用户。我想让用户返回到应用程序时通过身份验证。我该怎么做?它在Android上完美运行,但是当我关闭IOS应用程序时,我被重定向到输入OTP的页面,并且OTP再次发送到我先前登录的手机号码。在Android中,这些步骤已由Google跳过和管理,但是我很难用IOS来解决问题。 我已经执行了https://firebase.google.com/docs/auth/ios/phone-auth中的步骤,包括在info.plist中设置APN和反向客户端!从几天开始,我就被这些事情困扰。请帮忙 我保存登录类型选项,并在用户登录后重新启动应用程序时触发以下代码:

 Future  (BuildContext context, String phoneNumber) 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: null,
        codeSent: (verificationId, [code]) => _smsCodeSent(
            verificationId: verificationId,
            code: [code],
            context: context,
            phoneNumber: phoneNumber));
  }
  _verificationComplete(AuthCredential authCredential, BuildContext context) {
    FirebaseAuth.instance.signInWithCredential(authCredential);
    if (!smsCodeSent) handleLogin(context, authCredential);
  }
  _verificationFailed(AuthException authException, BuildContext context) {
    Navigator.of(context).pushNamedAndRemoveUntil(
        AuthPage.routeName, (Route<dynamic> route) => false);
  }
  _smsCodeSent(
      {String verificationId,
      List<int> code,
      BuildContext context,
      String phoneNumber}) {
    smsCodeSent = true;
    _smsVerificationCode = verificationId;
    smsOTPDialog(context, phoneNumber);
  }
  smsOTPDialog(BuildContext context, String userPhoneNumber) {
    Navigator.of(context)
        .push(_createRoute(userPhoneNumber, _smsVerificationCode));
  }

0 个答案:

没有答案