You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS/Cordova环境下Firebase Auth谷歌OAuth登录无限加载问题

可能的原因及排查方向

1. iOS 16的WKWebView存储策略变更

iOS 16对WKWebView的跨域Cookie、会话存储规则做了调整,Cordova默认使用的WKWebView可能无法在谷歌选择账户后,正确读取/写入Firebase认证所需的会话数据,导致流程中断。

  • 升级cordova-plugin-wkwebview-engine到最新稳定版,新版本通常会适配系统变更。
  • 在config.xml中添加WKWebView偏好配置,放宽存储限制:
    <preference name="AllowFileAccessFromFileURLs" value="true" />
    <preference name="AllowUniversalAccessFromFileURLs" value="true" />
    

2. Firebase Auth重定向URI配置缺失

Cordova的App内WebView属于特殊环境,即便Web端配置正确,仍需补充App专属的重定向规则:

  • 登录Firebase控制台,在认证->登录方法->谷歌的「授权重定向URI」列表中,添加Cordova应用的自定义URL Scheme(格式一般为你的AppID://__/auth/handler),同时确保Firebase Hosting域名也在列表内。
  • 在config.xml中配置通用链接和允许跳转规则:
    <universal-links>
        <host name="你的authDomain.firebaseapp.com" scheme="https" />
    </universal-links>
    <allow-intent href="https://accounts.google.com/*" />
    

3. WebView的URL跳转拦截问题

谷歌选择账户后的重定向请求,可能被Cordova的WebView拦截,导致Firebase无法接收回调:

  • 若使用cordova-plugin-inappbrowser打开登录页面,需监听loadstart事件,手动处理Firebase的回调URL:
    const browser = cordova.InAppBrowser.open('https://你的authDomain.firebaseapp.com/__/auth/handler', '_blank', 'location=yes');
    browser.addEventListener('loadstart', (event) => {
        if (event.url.startsWith('你的AppID://__/auth/handler')) {
            browser.close();
            firebase.auth().getRedirectResult();
        }
    });
    
  • 检查是否有自定义的URL拦截逻辑,阻止了Firebase回调地址的加载。

4. 谷歌OAuth会话缓存异常

首次登录输入密码是全新会话,而选择已有账户会调用缓存会话,iOS 16可能对WebView的缓存处理有变化,导致OAuth响应无法传递到Firebase:

  • 清除应用的网站数据(iOS设置->对应应用->清除网站数据)后重新测试。
  • 临时禁用Firebase Auth的持久化存储,验证是否是缓存问题:
    firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE)
      .then(() => {
        // 执行谷歌登录流程
      });
    

5. Cordova插件版本冲突

近期更新过Firebase或WebView相关插件的话,可能出现版本兼容问题:

  • 回退到之前iOS端正常工作时的插件版本组合,逐一排查新版本插件的影响。
  • 移除无关插件,排除插件间的网络请求或URL处理干扰。

内容的提问来源于stack exchange,提问作者Matt Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:50:36