除了 AppDelegate 和 UIViewController 之外的一个类中的 GIDSignInDelegate 使用示例,用于 swift 中的 Google 身份验证

Posted

技术标签:

【中文标题】除了 AppDelegate 和 UIViewController 之外的一个类中的 GIDSignInDelegate 使用示例,用于 swift 中的 Google 身份验证【英文标题】:GIDSignInDelegate usage example in a class apart from AppDelegate and UIViewController for Google Authentication in swift 【发布时间】:2017-11-09 21:01:07 【问题描述】:

我目前正在使用 FirebaseManager 类(除了任何 UIViewController 子类和 AppDelegate)来实现 GIDSignInDelegate 协议。

现在我不知道如何在用户成功登录谷歌帐户后实际显示错误或打开第一页。

【问题讨论】:

【参考方案1】:

方法,sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) ... 在登录尝试后被调用。如果您遵循他们的文档,它会在应用程序委托中设置,理论上该方法将位于该位置。

所以这是我的解决方案。

    按照 Google 文档设置 Google 登录(将内容放入应用委托等) 将您的 FirebaseManager 设置为 GIDSignIn 共享实例的 UI 委托(在它的 init 或您使用它的任何地方GIDSignIn.sharedInstance().uiDelegate = self/FirebaseManagerBlahblah 从应用代理成功登录后访问 uiDelegate

sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) guard let firebaseManager = signIn.uiDelegate as? FirebaseManager else return ...do stuff with firebaseManager!

我不喜欢依赖 AppDelegate 来做事,但尽可能遵循文档是最有意义的。

【讨论】:

以上是关于除了 AppDelegate 和 UIViewController 之外的一个类中的 GIDSignInDelegate 使用示例,用于 swift 中的 Google 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

AppDelegate segue 替代传递数据

iOS工程中AppDelegate.m文件的作用

Xcode11 新建工程中的SceneDelegate

在所有 ViewController 中执行一个方法

将 AppDelegate.h 和 AppDelegate.m 替换为 AppDelegate.swift

关于xcode11新建项目黑屏那点 blackj-01