首页 > 解决方案 > 如果安装了 Facebook 应用程序,Firebase iOS Facebook 身份验证将不起作用

问题描述

我为 Facebook 实施了 Firebase 身份验证。

如果我从我的 safari 浏览器登录 facebook,然后在我的 firebase iOS 应用程序上使用 Facebook 登录。它正确地进行了身份验证。所以基本的整合是有效的。

但是,如果我从浏览器注销或从不登录,并尝试使用我的应用程序中的 facebook auth 登录。如果您安装并登录了 facebook 应用程序,它将尝试使用该应用程序登录。在这里,它无法授权,只是将您返回到登录页面。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

允许通过 facebook 应用程序成功移交给 facebook auth 是否需要一些特殊的东西?

这是身份验证失败时记录的内容。

2020-09-28 21:02:25.486277-0400 Flixxaid [3832:875073] [连接] nw_read_request_report [C17] 接收失败,错误“软件导致连接中止” 2020-09-28 21:02:25.504312-0400 Flixxaid [3832 :875073] [connection] nw_read_request_report [C18] 接收失败,出现错误“软件导致连接中止”2020-09-28 21:02:25.571637-0400 Flixxaid [3832:875509] 6.32.0 - [Firebase/Analytics] [I- ACS023000] Deep Link Web URL 查询为空 用户取消登录 2020-09-28 21:02:26.001549-0400 Flixxaid[3832:875074] [tcp] tcp_input [C23.1:3] flags=[R] seq=3148860654, ack=0, win=0 state=CLOSED rcv_nxt=3148860654, snd_una=3733900017 2020-09-28 21:02:26.002891-0400 Flixxaid[3832:875074] [tcp] tcp_input [C23.1:3] flags=[R ] seq=3148860654, ack=0, win=0 state=CLOSED rcv_nxt=3148860654, snd_una=3733900017

标签: iosswiftfirebasefirebase-authenticationfacebook-login

解决方案


好的,我发现我的编码错误......这是我的原始代码AppDelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  guard let link = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) else { return false }
  self.handleIncomingDynamicLink(link)
  let handled = GIDSignIn.sharedInstance().handle(url)
  let fbHandler = ApplicationDelegate.shared.application(app, open: url,
    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
    annotation: options[UIApplication.OpenURLOptionsKey.annotation]
  )
  // DynamicLinks.performDiagnostics(completion: nil)
  return handled || fbHandler
}

这是支持正确处理 FB、Google 和动态链接的条件的正确版本...

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  var dlHandler = false
  if let link = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
    self.handleIncomingDynamicLink(link)
    dlHandler = true
  }
  let handled = GIDSignIn.sharedInstance().handle(url)
  let fbHandler = ApplicationDelegate.shared.application(app, open: url,
    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
    annotation: options[UIApplication.OpenURLOptionsKey.annotation]
  )
  // DynamicLinks.performDiagnostics(completion: nil)
  return handled || fbHandler || dlHandler
}

推荐阅读