Firebase OpenID认证跳转至about:blank问题求助
问题描述
应用使用Firebase Auth SDK(10.4.0)通过OAuth实现用户认证,已在Firebase控制台启用OpenID Connect登录方式,配置教育机构IServ作为认证提供商(填入ClientID、Issuer-URL及Client Secret)。调用以下代码唤起登录表单:
let oAuthProvider = OAuthProvider(providerID: "oidc.iserv") oAuthProvider.scopes = ["roles"] oAuthProvider.getCredentialWith(nil) { credential, error in print(credential, error) }输入登录信息后,浏览器跳转至空白页面,几秒后转向
about:blank,无法自动跳转回应用。同一Firebase项目下的另一个iOS应用代码完全相同,却能正常完成登录跳转。Xcode控制台及WebView均无错误信息。
排查方案
检查URL Scheme配置
确认异常应用的Info.plist中已添加Firebase Auth所需的URL Scheme,格式为fb<你的Firebase项目ID>。这个Scheme可以在Firebase控制台的项目设置→对应iOS应用页面找到,必须和控制台配置完全一致。验证Bundle ID匹配性
异常应用的Bundle ID必须和Firebase控制台中添加的该应用Bundle ID完全一致(包括大小写)。同一Firebase项目下的不同应用靠Bundle ID区分,不匹配会直接导致回调失败。检查Universal Links配置(若使用)
如果用Universal Links做跳转,需确认:- 应用的
Signing & Capabilities中已添加Associated Domains,并包含applinks:<你的Firebase项目关联域名>(一般是applinks:<项目ID>.firebaseapp.com) - 苹果开发者后台的应用ID已启用
Associated Domains权限 - Firebase控制台中该应用的Universal Links配置正确
- 应用的
确认ATS设置无限制
检查Info.plist中的ATS(App Transport Security)配置,确保没有错误限制IServ的Issuer-URL及相关跳转域名。IServ作为教育服务通常支持HTTPS,若有自定义ATS规则,需允许访问对应域名。清理Xcode缓存并重构建
清理Xcode的Derived Data(路径:Xcode→Settings→Locations→Derived Data→点击箭头打开文件夹后删除),然后重新构建应用,避免缓存导致配置不生效。验证Firebase配置文件
确保异常应用使用的GoogleService-Info.plist是从Firebase控制台对应应用下载的,不要复用另一个正常应用的配置文件。每个应用的配置文件包含唯一的客户端信息,混用会引发认证问题。
内容的提问来源于stack exchange,提问作者Oscar Junius

