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

用户从Facebook授权返回后App启动异常崩溃求助

分析Facebook授权返回后App崩溃的问题

首先先看你提供的崩溃日志:

Crashed: com.apple.main-thread 
0 libswiftCore.dylib 0x103c2faa4 swift_getObjectType + 60 
1 0x102e3dc58 @objc AppDelegate.application(UIApplication, open : URL, sourceApplication : String?, annotation : Any) -> Bool (AppDelegate.swift) 
2 0x102f5e730 -[FIRAuthAppDelegateProxy object:selector:application:openURL:sourceApplication:annotation:] + 4303562544 
3 0x102f5d8e4 __47-[FIRAuthAppDelegateProxy initWithApplication:]_block_invoke.199 + 4303558884 
4 0x102ee6aa0 -[FIRAAppDelegateProxy application:openURL:sourceApplication:annotation:] + 4303071904 
5 UIKit 0x18e064acc __58-[UIApplication _applicationOpenURLAction:payload:origin:]_block_invoke + 880 

从这个调用栈能看出几个关键信息:崩溃发生在主线程,触发点是swift_getObjectType——这个函数一般是Swift在尝试获取对象类型时,遇到了nil或者非法内存访问才会抛出崩溃。再结合调用链里的FIRAuthAppDelegateProxy,基本可以锁定问题和Firebase Auth处理Facebook授权的回调流程有关。

下面是几个最可能的原因和对应的解决方向:

  • Firebase Auth与Facebook登录的回调重复处理
    如果你同时集成了Facebook SDK原生登录和Firebase Auth的Facebook登录模块,很可能出现回调被重复处理的情况。Firebase的FIRAuthAppDelegateProxy会自动接管AppDelegate里的application:openURL:sourceApplication:annotation:方法,要是你自己还手动实现了Facebook的回调逻辑,就可能导致对象状态异常,触发崩溃。
    解决办法:移除你手动添加的Facebook回调代码,让Firebase代理来处理这个回调即可。

  • 回调方法里的强制解包操作
    在AppDelegate.application(open:sourceApplication:annotation:)的OC桥接方法中,可能存在对可选类型的强制解包(比如用!)。当Facebook返回的参数里有nil值时(比如sourceApplication为空),直接强制解包就会触发崩溃。
    解决办法:把所有可选参数的访问改成安全的可选绑定,比如:

    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        guard let sourceApp = sourceApplication else {
            return false
        }
        // 这里写你的处理逻辑,确保不会访问nil对象
        return true
    }
    
  • Firebase SDK版本兼容性问题
    旧版本的Firebase Auth SDK可能和最新的iOS系统、Facebook SDK存在兼容性问题,导致代理回调过程中出现内存错误或者类型不匹配。
    解决办法:更新Firebase相关依赖到最新版本。打开你的Podfile,把Firebase的版本更新后,执行pod update Firebase/Auth即可。

  • Firebase与Facebook的配置不匹配
    要是你在Firebase控制台没正确配置Facebook的应用ID和密钥,或者Facebook开发者后台没添加正确的回调URL(包含Firebase的回调地址),也可能导致授权返回后回调处理异常。
    解决办法:检查两边的配置,确保Facebook应用的回调URL包含https://<your-firebase-project-id>.firebaseapp.com/__/auth/handler,同时Firebase控制台的Facebook登录配置里填对了应用ID和密钥。

内容的提问来源于stack exchange,提问作者Utku Dalmaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:51