我在cordova iOS应用和Firebase reCAPTCHA验证方面遇到问题。
我正在尝试使用Firebase方法将电话号码登录到我的cordova应用中,大致如下:
// DOM:
<div id="recaptcha-verifier-container" />
// Render recaptcha widget
const recaptchaVerifier = new firebase.auth.RecaptchaVerifier(
'recaptcha-verifier-container',
{ 'size': 'normal' })
recaptchaVerifier.render()
// Sign in after user has completed captcha verification and entered phone number
firebase.auth().signInWithPhoneNumber(number, recaptchaVerifier)
在cordova android应用程序和纯Web应用程序上,这会在iframe中生成一个验证码复选框小部件(请参阅DOM屏幕截图),并且登录可以按预期进行。在iOS应用中,虽然未呈现验证码窗口小部件(请参阅DOM屏幕截图),所以用户无法完成它并登录。
控制台没有提供任何有用的消息,但是如果我打开iOS reCAPTCHA iframe网址,则会看到一个小部件,显示无法连接到reCAPTCHA服务器。请检查您的互联网连接并重新加载以获取reCAPTCHA挑战(请参见屏幕截图)。
我在项目中使用cordova-plugin-ionic-webview
,这使得整个应用程序都可以通过http://localhost:8080
上的内部Web服务器进行服务。我已将Firebase项目设置中的localhost域列入白名单。这应该可以解决由于file:///
协议而导致验证码无法正常工作的常见cordova问题。
您对如何解决iOS行为或如何进一步调试此问题有任何想法吗?