Firebase 身份验证 swiftui
Posted
技术标签:
【中文标题】Firebase 身份验证 swiftui【英文标题】:Firebase authentication swiftui 【发布时间】:2021-04-07 21:57:27 【问题描述】:如何修复这个代码呢。它给出了一个错误,不能推送 2 个调用必须只有一个。出于这个原因,我使用 firebase 身份验证的登录不起作用。我对 firebase 不是很好,不幸的是我没有获取文档。
// sessionStore中的注册码
func signUp(email: String, password: String, completion: @escaping (_ error: Error?) -> Void)
Auth.auth().createUser(withEmail: email, password: password) (result, error) in
if let error = error
print(error.localizedDescription)
else
completion(nil)
//用于登录视图的登录代码 - 特别是放置 * 的地方是我得到的错误必须包含一个变量而不是 2 个变量。
func signIn()
session.signIn(email: email, password: password) **(result, error)** in
if let error = error
self.error = error.localizedDescription
else
return
//登录sessionStore
func signIn(email: String, password: String, completion:@escaping (_ error: Error?) -> Void)
Auth.auth().signIn(withEmail: email, password: password) (result, error) in
if let error = error
print(error.localizedDescription)
else
completion(nil)
// 登录代码 登录视图 在视图中也会出现同样的错误
func signUp()
session.signUp(email: email, password: password) (result,_ error) in
if let error = error
self.error = error.localizedDescription
else
self.email = ""
self.password = ""
我想将用户 ID 存储在 Firestore 中,因此我将用户的帐户链接到他们的数据。 *** 上的旧解决方案不起作用,所以我想重新提出这个问题。
【问题讨论】:
【参考方案1】:在sessionStore
中,您的完成处理程序只发回Error?
:
func signIn(email: String, password: String, completion:@escaping (_ error: Error?) -> Void)
但是,当您在这里调用 result
和 error
时,您会尝试使用它:
session.signIn(email: email, password: password) (result, error) in
如果您不需要result
,最简单的解决方法就是将该行更改为:
session.signIn(email: email, password: password) (error) in
另外,您目前没有在sessionStore
中发送该错误。添加这个:
func signIn(email: String, password: String, completion:@escaping (_ error: Error?) -> Void)
Auth.auth().signIn(withEmail: email, password: password) (result, error) in
if let error = error
print(error.localizedDescription)
completion(error) //<-- Here
else
completion(nil)
如果您确实在您的视图中需要signIn
函数中的result
,您可以修改sessionStore
中的signIn
函数以同样返回结果:
func signIn(email: String, password: String, completion:@escaping (AuthDataResult?,Error?) -> Void)
Auth.auth().signIn(withEmail: email, password: password) (result, error) in
completion(result, error)
在这种情况下,您可以在视图中保留原来的 (result, error)
代码。
【讨论】:
注册视图中的注册功能怎么样。 您将应用我为signIn
说明的完全相同的原则
一旦用户登录我如何完成它。在登录视图中
还有为什么一旦用户注册,他们就会自动登录。我希望一旦用户注册,字段设置为空,他们必须通过登录才能登录登录后进入内容视图。
Group if (session.session != nil) VStack Text("Welcome back here user!") Button(action:session.signOut) Text("Sign out") else SignInView().environmentObject(SessionStore()) .onAppear(perform: getUser) // 上面是一些执行认证的代码。以上是关于Firebase 身份验证 swiftui的主要内容,如果未能解决你的问题,请参考以下文章
处理 SwiftUI 组合应用程序中的 Firebase 身份验证错误
成功登录后 SwiftUI Firebase 身份验证关闭视图
在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]