我是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也会签署用户。
如果我创建新的,也许app会注销用户?那么为什么我没有找到任何关于这种行为的信息(如果有人有任何线索我会很感激。
答案 0 :(得分:1)
Firebase身份验证用户保持登录状态,直到:
单个设备上的单个应用只能拥有一个已登录的用户。如果您在同一设备上登录(或创建)其他用户,则会退出以前的用户。