启用App Check的Flutter iOS应用中Firebase电话认证reCAPTCHA重复弹出两次的问题求助
启用App Check的Flutter iOS应用中Firebase电话认证reCAPTCHA重复弹出两次的问题求助
各位开发者好,我目前在开发一款集成了Firebase Authentication和App Check的Flutter应用,在iOS平台上遇到了一个棘手的问题:调用FirebaseAuth.instance.verifyPhoneNumber()进行电话认证时,reCAPTCHA会重复弹出两次。
具体情况是这样的:第一次reCAPTCHA弹窗弹出,我完成验证后回到应用,但没有任何回调触发(既没进入verificationCompleted也没走到codeSent),紧接着第二个reCAPTCHA就立刻弹出来了,只有完成第二次验证之后,短信验证的流程才会正常推进。另外我发现,如果这个手机号之前被用于其他Firebase账号,出现这个问题的概率会更高。
下面是我相关的代码片段:
Firebase初始化与App Check激活代码
await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); await FirebaseAppCheck.instance.activate( appleProvider: AppleProvider.deviceCheck, );
电话认证调用代码
await FirebaseAuth.instance.verifyPhoneNumber( phoneNumber: '$_countryCode$_phoneNumber', timeout: Duration.zero, // 也试过设置30秒、60秒的情况 verificationCompleted:(PhoneAuthCredential credential) { print('verificationCompleted'); }, verificationFailed: (FirebaseAuthException e) { print('verificationFailed'); }, codeSent: (String verificationId, int resendToken) { print('codeSent'); }, codeAutoRetrievalTimeout: (String verificationId) { print('codeAutoRetrievalTimeout'); }, );
我已经尝试过这些排查手段,但问题依然存在:
- 调整
timeout参数,从Duration.zero到30秒、60秒都试过,没有改善 - 在Info.plist中添加了后台模式配置:
<key>UIBackgroundModes</key> <array> <string>remote-notification</string> <string>fetch</string> </array>
- 我的项目是模块化/白标架构,Firebase是从单独的package中初始化的,应用通过flavor来运行
有没有朋友遇到过类似的问题?或者能给我一些排查方向的建议?万分感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

