Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法
Posted
技术标签:
【中文标题】Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法【英文标题】:Firebase Google Sign In (iOS) - GIDSignInUIDelegate methods never called 【发布时间】:2019-06-22 21:36:14 【问题描述】:使用 Firebase 身份验证通过 Google 登录。我可以成功登录,并且在 AppDelgate 类中调用了 sign didSignInForUser 方法,但从未调用过相应的 UI 委托方法。 为什么没有在 UIViewController 中调用 uiDelegate 方法的任何想法?
class ViewController: UIViewController, GIDSignInUIDelegate
override func viewDidLoad()
super.viewDidLoad()
GIDSignIn.sharedInstance().uiDelegate = self
// This method is never called
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: NSError!)
if (error == nil)
// Perform any operations on signed in user here.
else
print("\(error.localizedDescription)")
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
// Override point for customization after application launch.
FirebaseApp.configure()
// Initialize sign-in
GIDSignIn.sharedInstance().clientID = "CLIENT_ID"
GIDSignIn.sharedInstance().delegate = self
return true
// This is called in AppDelagte on successful sign in
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!,
withError error: Error!)
if let error = error
print("\(error.localizedDescription)")
else
// Perform any operations on signed in user here.
【问题讨论】:
【参考方案1】:首先,我假设您运行的是 ios 11 或更高版本。我在您的代码中没有看到任何 GIDSignInUIDelegate
方法实现。 didSignInForUser
是一个 GIDSignInDelegate
方法。但是如果你确实实现了GIDSignInUIDelegate
并且没有得到回调,这就是原因。
signInWillDispatch:error:
确实应该被调用。但您的问题可能出在signIn:presentViewController:
和signIn:dimissViewController:
。故意不调用这两个方法,因为底层 SFAuthenticationSession
提供了开发人员无法访问的私有 API 的登录流程,因此这些回调是不可能的。
在这里查看我的完整答案:https://***.com/a/57112433/1433612
【讨论】:
以上是关于Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 上退出 Google 登录无法在 Flutter Firebase 中运行
Flutter Firebase Android/ios Google 登录错误
Flutter with Firebase Google 登录:断言失败 network_image_io.dart
Flutter Firebase Google Apple Facebook 登录