SwiftUI、Firebase 链接以确认电子邮件
Posted
技术标签:
【中文标题】SwiftUI、Firebase 链接以确认电子邮件【英文标题】:SwiftUI, Firebase link to confirm Email 【发布时间】:2020-08-03 16:49:56 【问题描述】:我想增加在注册期间发送验证电子邮件的可能性。 如何在函数内部和 SignupView 中插入“sendEmailVerificationWithCompletion”?非常感谢:)
import SwiftUI
import FirebaseAuth
// Add code here:
static func createUser(withEmail email:String, name: String, password:String, completionHandler:@escaping (Result<Bool,Error>) -> Void)
Auth.auth().createUser(withEmail: email, password: password) (authResult, error) in
if let err = error
completionHandler(.failure(err))
return
guard let _ = authResult?.user else
completionHandler(.failure(error!))
return
let data = FBUser.dataDict(uid: authResult!.user.uid, name: name, email: authResult!.user.email!)
FBFirestore.mergeFBUser(data, uid: authResult!.user.uid) (result) in
completionHandler(result)
completionHandler(.success(true))
//And add code here:
struct SignUpView: View
var body: some View
VStack(spacing: 20 )
Button(action:
FBAuth.createUser(withEmail: self.user.email, name: self.user.fullname, password: self.user.password) (result) in
switch result
case .failure(let error):
self.errorString = error.localizedDescription
self.showError = true
case .success(_):
print("Account creation successful")
)
Text("Register")
【问题讨论】:
【参考方案1】:您可以在该用户登录后随时将 Firebase 告知 send a verification email to the current user。例如,您可以在创建用户帐户后立即这样做:
Auth.auth().createUser(withEmail: email, password: password) (authResult, error) in
if let err = error
completionHandler(.failure(err))
return
guard let _ = authResult?.user else
completionHandler(.failure(error!))
return
// send verification email
Auth.auth().currentUser?.sendEmailVerification (error) in
// ...
// write profile to database
let data = FBUser.dataDict(uid: authResult!.user.uid, name: name, email: authResult!.user.email!)
FBFirestore.mergeFBUser(data, uid: authResult!.user.uid) (result) in
completionHandler(result)
completionHandler(.success(true))
【讨论】:
非常感谢 :) 我做到了。带有链接的电子邮件正确到达,即使它没有确认电子邮件,它也会登录。如果链接之前没有被确认,我如何添加一条规则说它不应该登录? 这是不可能的,但也不需要。您可能想要的是当帐户未验证时应用程序不会继续运行,您可以通过检查用户的isEmailVerified
来做到这一点。然后,为了确保数据访问安全,您需要先检查服务器中的相同属性,然后再允许它们访问任何数据。这个话题之前已经讲过了,请看***.com/a/56670780、***.com/a/48029049和***.com/a/55328819
好的,我试试看:)再次感谢以上是关于SwiftUI、Firebase 链接以确认电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Firebase auth 邮件验证是没用的,因为用户即使不点击确认链接也可以访问应用
Firebase Auth 密码重置:如何正确发送包含确认码的密码重置电子邮件?
在确认注册之前验证用户的电子邮件地址,使用 Flutter 和 Firebase
SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据