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

Xcode调用GIDSignInButton出现登录报错与视图控制器加载警告问题

GIDSignIn 报错问题解决方案

根因说明

你遇到的Code=-5报错与SFAuthenticationViewController警告是关联问题,本质是GIDSignIn相关实例或触发登录的控制器被提前释放,导致登录回调链路断裂,系统误判为用户主动取消了登录流程,同时触发了控制器销毁时的视图加载警告。

可行修复方案

  • 修正GIDSignIn实例的持有关系
    不要将GIDSignIn实例声明为触发登录方法内的局部变量,要在对应ViewController中声明为全局持有的属性,避免ARC在登录弹窗弹出后自动回收实例:

    // Swift 示例
    var signInInstance: GIDSignIn?
    
    // Objective-C 示例
    @property (nonatomic, strong) GIDSignIn *signInInstance;
    
  • 校验登录调用参数
    调用signInWithPresentingViewController相关方法时,传入的presentingViewController必须是当前活跃、未被释放的控制器,不要在viewDidLoad等视图还未完全加载的生命周期方法中直接触发登录调用。

  • 补全App全局回调配置
    根据你项目的架构,在AppDelegate或SceneDelegate中实现Google登录的回调拦截逻辑,确保登录完成后跳转回App时能将结果传递给GIDSignIn实例:

    // iOS 13+ SceneDelegate 示例
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        guard let url = URLContexts.first?.url else { return }
        GIDSignIn.sharedInstance.handle(url)
    }
    
  • 检查URL Scheme配置
    确认项目Info.plist的URL Types中,已经正确添加了GoogleService-Info.plist文件中对应REVERSED_CLIENT_ID的值作为URL Scheme,避免登录完成后无法正常跳转回你的App。

内容的提问来源于stack exchange,提问作者Mr.H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:45:03