gpt4 book ai didi

swift - 如何检查用户的电子邮件是否经过验证?

转载 作者:行者123 更新时间:2023-12-04 08:26:40 27 4
gpt4 key购买 nike

我正在制作一个应用程序,无论他们的电子邮件是否经过验证,用户都可以登录。但是,如果他们的电子邮件未经验证,他们将只能访问一页,如果通过验证,他们将可以访问整个应用程序 (AppView)。
到目前为止,使用我拥有的代码,我能够创建一个用户并让他们登录,让他们可以访问完整的应用程序。但如果他们的电子邮件未经验证,我不确定如何显示其他 View 。
这是我用于检查用户是否已登录的代码:

func listen () {
// monitor authentication changes using firebase
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
if let user = user {
// if we have a user, create a new user model
print("Got user: \(user)")
self.isLoggedIn = true
self.session = User(
uid: user.uid,
displayName: user.displayName, email: "")
} else {
// if we don't have a user, set our session to nil
self.isLoggedIn = false
self.session = nil
}
}
}
这是我选择它应该显示的 View 的地方:
struct ContentView: View {


@EnvironmentObject var session: SessionStore

func getUser () {
session.listen()
}

var body: some View {

Group {

if (session.session != nil) {

// I need to check here if the user is verified or not

AppView() //full application view

} else {

OnBoardingView()

}
}.onAppear(perform: getUser)

}
}

最佳答案

您可以通过检查 User.isEmailVerified property 来查看用户是否通过验证。 .您可能遇到的主要问题是,在您单击电子邮件中的链接后,该属性不会立即刷新,因为 iOS 无法知道您单击了该链接。
客户端将自动获取 isEmailVerified 的新值。当它刷新 token 时(每小时自动发生一次),当用户再次明确登录时,或者当您明确force it to get a new ID token 时.
使此流程为您的用户平稳运行的常见方法是:

  • 当 iOS 重新获得焦点时强制刷新 ID token 。
  • 定期强制刷新 ID token ,同时在“等待您验证电子邮件地址”屏幕上。,
  • 向用户显示一个按钮“我已验证我的电子邮件地址”,然后刷新 ID token 。

  • 或者,您可以在向用户发送电子邮件后注销用户,然后检查他们何时再次登录。虽然这更容易实现,但上述流程对用户更友好。

    关于swift - 如何检查用户的电子邮件是否经过验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65225001/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com