Firebase未存储登录用户

时间:2018-06-30 21:58:08

标签: swift firebase firebase-authentication

与Firebase一起工作了将近半年,从未遇到过此问题。就像创建新用户之前一样使用代码,他会出现在控制台中,当我关闭应用程序时,我可以登录,但使用与往常相同的代码会不断提示我输入密码。在第一个VC中,我有:

    if let user = Auth.auth().currentUser {
        performSegue(withIdentifier: "authorized", sender: self)
    }

这将检查是否存储了身份验证令牌,并执行segue到加载屏幕。但是,这永远不会发生。该代码已运行,但不执行任何操作,编译器无错误,控制台无错误。

编辑1:我还尝试创建新项目,在其中我重写了所有获得相同结果的代码,但是我的其他项目没有任何问题,除此以外,我还能使用firebase进行其他操作,例如访问Firestore存储用户,浏览了所有文档,但找不到任何解决方案。

编辑2:登录代码

if(email.text != "" && password.text != ""){
        Auth.auth().signIn(withEmail: email.text!, password: password.text!) { user, error in
            if(error == nil && user != nil) {
                userID = (Auth.auth().currentUser?.uid)!
                print("Signed in as: \(userID)")

                self.performSegue(withIdentifier: "load", sender: self)
            } else {
                print("Error found: \(error?.localizedDescription)")
            }
        }
    }

解决方案:

DispatchQueue.main.async(){
        if let user = Auth.auth().currentUser {
            userID = (Auth.auth().currentUser?.uid)!

            self.performSegue(withIdentifier: "authorized", sender: self)
        }
    }

已加载异步,因此Firebase将在检查身份验证之前进行配置

1 个答案:

答案 0 :(得分:1)

问题可能是您在Firebase正确初始化之前调用了代码。我建议将入口视图控制器的viewDidAppear用于此类情况。如果您使用的是viewDidLoad,则Firebase可能尚未加载。