【问题标题】:Firebase iOS user authentication: avoiding getting logged out of appFirebase iOS 用户身份验证:避免退出应用
【发布时间】:2018-03-17 10:05:39
【问题描述】:

在整个应用程序中,我使用两种方法在任何给定时间获取当前用户 ID。我在某个地方捡到了它们两个,并且(据我所知)工作正常。然后我使用方法 3 作为方法 2 的变体。

方法一:

if let user = Auth.auth().currentUser{
  let uid = user.uid
}

方法二:

handle = Auth.auth().addStateDidChangeListener { (auth, user) in
  if let user = user {
            // User is signed in.
    self.USER   = user
    self.userID = self.USER?.uid

   } else {
            // No user is signed in.
     let vc = self.storyboard?.instantiateViewController(withIdentifier: "LoginScreen")
     self.present(vc!, animated: true, completion: nil) 

 }

方法三:

handle = Auth.auth().addStateDidChangeListener { (auth, user) in
  if let user = user {
            // User is signed in.
    self.USER   = user
    self.userID = self.USER?.uid

   } else {
            // No user is signed in.
 }

现在看来方法 1 和 3 的工作原理大致相同,而方法 2 让我更频繁地返回登录屏幕(例如,当手机从 3G 转到 Wifi 或飞行模式时)。

鉴于我希望我的应用长时间保持登录状态(即使进入后台并返回),建议使用方法 1 或 3。但是,我不太明白

  • 方法一和方法三的区别
  • 当 1 和 3 无法建立连接时,应用程序应该做什么?是否应该冻结直到重新建立连接?我担心方法 1 和 3 可能更容易崩溃。但是方法 2 看起来很烦人。

一般来说,一旦用户通过 Firebase 正确进行身份验证,应用程序是否有理由返回登录屏幕?用户能否在任意时间段内不保持登录状态(例如 Facebook 会)?如果是这样,我可以通过哪种方法来实现?

【问题讨论】:

  • 好的,所以在检查时,我想我可能会误解和滥用上述代码。我认为方法 2 应该在登录屏幕的 ViewWillAppear 中,如果用户登录它直接进入应用程序,否则它会停留在登录屏幕上。我不认为在整个应用程序中都需要方法 2 和 3,一​​旦我在应用程序中,如果我需要用户 ID,我可以使用方法 1 执行所有操作。对吗?

标签: ios swift firebase firebase-authentication


【解决方案1】:

刚刚提到您首先提出的几点,您提到在调用方法 2 和 3 时应用程序冻结。你在哪里称呼这些?您需要确保它们在主线程上运行,以便它们不会干扰您的 UI,因为它是一个异步函数。

另外,您是否在登录后删除状态更改侦听器?在您的登录 VC 中,您可以拥有:

deinit {
  if let handle = handle {
    Auth.auth().removeStateDidChangeListener(handle)
  }
}

此外,您还可以使用GIDSignIn.sharedInstance().signInSilently() 方法。

看看 iOS 友好的聊天示例,他们有一个很好的登录流程,并且可以很好地处理已经登录的用户。 https://codelabs.developers.google.com/codelabs/firebase-ios-swift/#0

【讨论】:

  • 谢谢 Niamh -- 我认为您提出的一些观点是针对 Google-Login 的,但您的帮助很大。
猜你喜欢
  • 2021-06-06
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
相关资源
最近更新 更多