Swift中Firebase OAuth认证自定义域名配置问题咨询
iOS Firebase Auth 自定义域名配置方案
iOS原生应用支持Firebase Authentication自定义域名,但无法通过FirebaseOptions直接设置authDomain,需要通过手动构造认证URL的方式实现,步骤如下:
1. 确认前置配置完成
确保你已经完成:
- Firebase Hosting自定义域名
login.ourappdomain.com的配置与验证 - 在Firebase控制台「Authentication > 设置 > 自定义域名」中启用该域名
- 将
login.ourappdomain.com添加到「Authentication > 设置 > 授权域名」列表
2. 手动构造OAuth认证URL
放弃使用Firebase Auth SDK默认的signIn(with:)方法,直接构造指向自定义域名的认证URL:
let customAuthDomain = "login.ourappdomain.com" let provider = "microsoft.com" // 替换为你的OAuth服务商标识符 let authURL = URL(string: "https://\(customAuthDomain)/__/auth/handler?provider=\(provider)")!
3. 使用Web认证会话打开URL
用ASWebAuthenticationSession(推荐)或SFSafariViewController打开构造好的URL,并处理回调:
let callbackScheme = "your-app-scheme://" // 替换为你在Info.plist中配置的URL Scheme let session = ASWebAuthenticationSession(url: authURL, callbackURLScheme: callbackScheme) { callbackURL, error in guard let callbackURL = callbackURL, error == nil else { // 处理错误 return } // 解析回调URL中的授权信息 let components = URLComponents(url: callbackURL, resolvingAgainstBaseURL: false) guard let idToken = components?.queryItems?.first(where: { $0.name == "id_token" })?.value else { return } // 用Firebase Auth完成认证 let credential = OAuthProvider.credential(withProviderID: provider, idToken: idToken) Auth.auth().signIn(with: credential) { result, error in // 处理认证结果 } } session.presentationContextProvider = self session.start()
关键说明
Firebase Auth的Swift SDK未暴露authDomain属性,因为原生认证流程更多依赖后台配置与自定义URL Scheme,但通过手动构造认证URL并处理回调的方式,完全可以替代默认的firebaseapp.com域名。
内容的提问来源于stack exchange,提问作者Paulw11
相关产品推荐
相关产品推荐

