SwiftUI 和 Firebase:当前用户是不是持续存在?
Posted
技术标签:
【中文标题】SwiftUI 和 Firebase:当前用户是不是持续存在?【英文标题】:SwiftUI & Firebase: Does current user persist?SwiftUI 和 Firebase:当前用户是否持续存在? 【发布时间】:2021-10-17 01:40:48 【问题描述】:我正在构建一个使用 firebase 登录的应用程序,当我检查当前用户时,即使我启动模拟器它也会说有一个当前用户。这是否正确,用户是否坚持?
这里是我检查用户的地方:
var body: some View
VStack
if authManager.signedIn
//Create a coordinator instance and inject it into the app
HomeTabView()
else
InitialView()
.onAppear
print(authManager.signedIn)
authManager.signedIn = authManager.isSignedIn
print(authManager.signedIn)
这是身份验证管理器的代码:
class authentication: ObservableObject
//Class that will handle logging in using firebase
let auth = Auth.auth()
@Published var signedIn: Bool = false
private var firebaseLoggedIn: Bool = false
private var localLoggedIn: Bool = false
//Enabled will be triggered through the settings to allow the user the opportunity to use biometrics to login
var enabled: Bool = false
var isSignedIn: Bool
if auth.currentUser != nil
print (auth.currentUser?.email as Any)
return auth.currentUser != nil
【问题讨论】:
是的,用户仍然存在。但是,我建议使用authStateListener
并替换您的 authManager.signedIn = authManager.isSignedIn
,这似乎很脆弱。
谢谢,我会试试的,我发现将模拟器重置为初始设置会清除当前用户的缓存,这样也可以正常工作
【参考方案1】:
Firebase 会自动保留用户凭据,并在应用重新启动时尝试恢复这些凭据。请注意,这需要调用服务器,因此在您的应用启动时可能无法正确完成,因此currentUser
可能此时仍为nil
。
为确保您在用户凭据已恢复(或被服务器拒绝,例如帐户已被禁用时)时收到通知,请务必使用身份验证状态侦听器,如第一个 sn-p 中所示getting the current user 上的文档 n。
【讨论】:
以上是关于SwiftUI 和 Firebase:当前用户是不是持续存在?的主要内容,如果未能解决你的问题,请参考以下文章
Firestore 和 SwiftUI - 我的快照阅读器是不是不必要地读取数据库?
Firebase SwiftUI 和 Firebase Auth - 不读取用户 ID?
SwiftUI / Firebase:我可以使用@Published 向 Firebase 数据库发送和接收单个值吗?