2017-04-08 147 views
1

我需要帮助使用我的代码。这里是链接到我的loginviewcontroller的代码,以及我在互联网上无法找到的任何地方解释这一点。我试图让用户第一次登录时,他们会一直登录,直到他们退出为止,这样用户就不必每次打开应用程序时都继续登录。我试过了钥匙圈和所有这些,但我无法弄清楚。我错过了什么?我摆脱了试图保存信息的垃圾代码。自动登录Firebase用户

import UIKit 
import Firebase 
import FirebaseStorage 
import FirebaseDatabase 
import FirebaseAuth 

class LoginViewController: UIViewController { 
    @IBOutlet weak var emailField: UITextField! 
    @IBOutlet weak var pwField: UITextField! 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(true) 

     if FIRAuth.auth()?.currentUser == nil { 
      let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login") as! UsersViewController 
      present(vc, animated: true, completion: nil) 
     } 
    } 

    @IBAction func loginPressed(_ sender: Any) { 
     guard emailField.text != "", pwField.text != "" else {return} 

     FIRAuth.auth()?.signIn(withEmail: emailField.text!, password: pwField.text!, completion: { (user, error) in 
      if let error = error { 
       print(error.localizedDescription) 
      } 

      if user != nil { 
       let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "centralvc") 

       self.present(vc, animated: true, completion: nil) 
      } 
     }) 
    } 
} 

回答

0

从viewWillAppear中移动的一切viewDidAppear

1

首先,如果用户登录的主画面上我建议检查,并且如果他不显示登录视图控制器。

现在要检查用户是否已登录,我建议您调用Firebase的currentUser方法,而不是使用CoreData或UserDefaults进行检查,因为您可能已在设备上登录,但用户的UID已更改。我不会深入讨论如何实施Firebase的方法,但您可以在这里看到它们全部: https://firebase.google.com/docs/auth/ios/start