【问题标题】:Firebase + iOS: handle multiple auth providersFirebase + iOS:处理多个身份验证提供程序
【发布时间】:2016-10-19 20:39:44
【问题描述】:

我正在创建一个应用程序来学习如何将 Firebase 与 Swift 3 一起使用。到目前为止,我已经使用 facebook 和 google 实现了身份验证。棘手的部分是 AppDelegate 中的一个函数:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

    // Works with google
    return GIDSignIn.sharedInstance().handle(url,sourceApplication: sourceApplication, annotation: annotation)

    // Works with facebook
    //return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}

问题是:如果我在用户登录 facebook 时评论 facebook 行,它将不会返回到应用程序。谷歌也是如此。

我正在遵循这些指南:

我的问题是我应该如何使用此功能才能与许多身份验证提供程序正常工作?如果没有办法做到这一点,那么实施它的正确方法是什么?

感谢您的帮助

【问题讨论】:

    标签: ios facebook firebase-authentication


    【解决方案1】:

    像这样:

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    
        let googleSignIn = GIDSignIn.sharedInstance().handle(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
    
        let facebookSignIn = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
    
        return googleSignIn || facebookSignIn
    }
    

    【讨论】:

      【解决方案2】:

      我找到了答案。 func 现在是这样的,适用于 Google 和 Facebook:

      func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
      
          if GIDSignIn.sharedInstance().handle(url,
                                               sourceApplication: sourceApplication,
                                               annotation: annotation) {
              return true
          }
          return FBSDKApplicationDelegate.sharedInstance().application(application,
                                                                       open: url,
                                                                       sourceApplication: sourceApplication,
                                                                       annotation: annotation)
      }
      

      【讨论】:

        猜你喜欢
        • 2021-06-02
        • 2016-12-19
        • 2020-08-21
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2017-07-21
        • 2018-03-09
        • 1970-01-01
        相关资源
        最近更新 更多