管理多个 iOS 身份验证 Firebase - Swift - 以编程方式

Managing multiple iOS authentication Firebase - Swift - Programmatically

我有一个关于向 iOS 应用程序添加多种身份验证方法的问题。

一些身份验证系统(例如FacebookGoogle)需要return方法中的布尔值:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool

为了 Google 我需要 return:

return GIDSignIn.sharedInstance()?.handle(url) ?? true

对于 Facebook 身份验证,我需要 return:

return ApplicationDelegate.shared.application(app, open: url, options: options)

如果我 return 一个布尔值,另一个将永远不会被调用。

我如何检查用户是否使用一种特定方法登录并且 return 正确的布尔值?

试试这个:

if GIDSignIn.sharedInstance()?.handle(url) {
  return true
}
else if ApplicationDelegate.shared.application(app, open: url, options: options) {
  return true
}
return false

FirebaseUI 遵循类似的方法 - 它遍历所有可用/激活的身份验证提供程序,检查每个提供程序是否能够处理 URL,如果是,则返回 true .查看他们的 implementation.