如何解决Firebase 身份验证未按预期工作用户正在登录主屏幕或注册页面
我正在尝试进行 Firebase 身份验证,但无法成功进行身份验证。我有一个用户可以遵循的身份验证流程。但是一旦用户注册,他们就会显示在主屏幕上,而不是在注册流程之后转到其他页面。这段代码在我的场景委托中的 willConnectTo session
函数中。
weak var handle: AuthStateDidchangelistenerHandle?
handle = Auth.auth().addStateDidchangelistener { [weak self] (auth,user) in
if((user) != nil){
let home = MainVC()
print("User is already signed in")
self!.window?.rootViewController = home
} else if((user) == nil) {
print("Not Logged in")
let signup = SignUpVC()
self!.window?.rootViewController = signup
}
}
如果有人可以帮助解决这个问题或提供任何可能的提示,我将不胜感激。
解决方法
我猜,在您的 SignUpVC 中您调用 Auth.auth().createUser(..)
,然后用户应该继续到另一个注册屏幕以完成他的个人资料?
问题是,在调用 createUser()
后,Firebase 将使用新创建的用户对象再次调用您的 addStateDidChangeListener
。
这次您的检查 user != nil
成功,您的代码会将 mainVC 作为 rootVC 推送。
所以也许您应该检查一下用户对象是否也已完全设置。如果缺少某些设置,请引导用户使用 CompleteSignUpVC。
您的代码可能如下所示:
handle = Auth.auth().addStateDidChangeListener { [weak self] (auth,user) in
if((user) == nil){
print("Not Logged in")
let signup = SignUpVC()
self!.window?.rootViewController = signup
return
}
if (user.isSignUpCompleted()) {
print("User is already signed in")
let home = MainVC()
self!.window?.rootViewController = home
} else {
print("User needs to complete signUp flow")
let home = CompleteSignUpVC()
self!.window?.rootViewController = home
// or otherwise,ignore this case and do nothing further,// since your current flow will do the rest
}
}
如果这可能无法解决您的问题,请提供有关您的应用注册流程的更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。