Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当我在不注销的情况下终止应用程序时,经过身份验证的用户是否保持登录状态?_Ios_Swift_Firebase_Firebase Authentication - Fatal编程技术网

Ios 当我在不注销的情况下终止应用程序时,经过身份验证的用户是否保持登录状态?

Ios 当我在不注销的情况下终止应用程序时,经过身份验证的用户是否保持登录状态?,ios,swift,firebase,firebase-authentication,Ios,Swift,Firebase,Firebase Authentication,我是Firebase的新手,如果用户登录,我目前正在尝试加载应用程序。 所以根据一本书,我必须这样检查: if Auth.auth().currentUser?.uid == nil { //do smth } 因此,如果我没有错过什么,也没有错,它只会检查控制台的身份验证部分中的最后一个用户。我的意思是,如果我以这种方式注册用户: Auth.auth().createUser(withEmail: email, password: password) { (User, Er

我是Firebase的新手,如果用户登录,我目前正在尝试加载应用程序。 所以根据一本书,我必须这样检查:

if Auth.auth().currentUser?.uid == nil {
      //do smth  
}
因此,如果我没有错过什么,也没有错,它只会检查控制台的身份验证部分中的最后一个用户。我的意思是,如果我以这种方式注册用户:

 Auth.auth().createUser(withEmail: email, password: password) { (User, Error) in
        if Error != nil {
            print(Error)
            return
        }
只要终止我的应用程序,在我的检查过程中,它将只看到最后注册的用户。在检测到该登录用户后,如果我注销,则在下一个检查过程中,应用程序将不会看到其余已登录用户。

所以看起来:

我运行应用程序,然后创建用户多次创建,然后终止应用程序,然后再次创建,然后终止应用程序,然后再返回 然后在步骤1之后,检查用户是否登录。这是我不知道的最后一个用户还是第一个用户,因为我没有找到它的详细信息

if Auth.auth().currentUser?.uid == nil {
  //do sign out
  do {
    try Auth.auth().signOut()
  } catch let logoutError {
    print(logoutError)
  }
}

它找到已登录的用户,然后我签出该用户

我终止应用程序。 我再次运行此应用程序,在对登录用户进行初始检查时,未找到任何用户

override func viewDidLoad() {
super.viewDidLoad()
  navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(handleLogout))

//user is not logged in
if Auth.auth().currentUser?.uid == nil {
    signOut()
}
}

为什么??我的意思是,我没有亲自注销其余注册用户,我知道在调用createUser func时,这个createUser func也会登录用户


如果我创建新应用程序,应用程序可能会注销用户?那么为什么我没有找到任何关于这种行为的信息呢?如果有人有任何线索,我将不胜感激

Firebase身份验证用户保持登录状态,直到:

要么您的代码显式地签出它们 或者在同一设备上的同一应用程序中创建另一个用户 或者直到发生要求他们再次登录的事件(如密码更改)
单个设备上的单个应用程序只能有一个登录用户。如果您在同一设备上登录或创建另一个用户,以前的用户将被注销。

我不确定是否理解您的问题。在步骤3中,您说您注销了用户。在这种情况下,步骤5中的行为在我看来似乎是正确的。@FrankvanPuffelen我只签出一个用户而不是其余的用户,并且根据您关于Firebase身份验证的回答,用户保持登录。用户应该登录,但是Auth.Auth.currentUser?.uid找不到为什么?我没有注销。对不起,我还是不明白。我扩展了我对系统工作原理的回答,希望它能有所帮助。除此之外:我希望其他人能够理解您描述的行为,并能提供帮助。@N.Khasanov用户不应注销。viewDidLoad:方法是否为rootViewController?或者您在AppDelegate.m中初始化了它的实例?我的意思是,您是否检查了viewDidLoad:函数在您的应用程序IDFinishLaunching:事件之前没有调用,您在该事件中配置了firebase?@N.Khasanov您说我只签出一个用户,而不是Auth.Auth只维护最后一个和单个用户,因此如果您签出最后一个用户,您将一无所获。不获取其他用户您没有多个用户要注销。