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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:40:21