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
相关产品推荐
相关产品推荐

