【问题标题】:How to check if user's email is verified?如何检查用户的电子邮件是否经过验证?
【发布时间】:2021-03-21 07:31:53
【问题描述】:

我正在制作一个应用程序,用户可以在其中登录,无论他们的电子邮件是否经过验证。但是,如果他们的电子邮件未经过验证,他们将只能访问一个页面,如果经过验证,他们将可以访问整个应用程序 (AppView)。

到目前为止,使用我拥有的代码,我能够创建一个用户并让他们登录,让他们可以访问完整的应用程序。但如果他们的电子邮件未经过验证,我不确定如何显示其他视图。

这是我检查用户是否登录的代码:

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
        }
    }
}

我在这里选择它应该显示的视图:

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)
    
  }

}

【问题讨论】:

    标签: swift firebase firebase-authentication swiftui


    【解决方案1】:

    您可以通过检查User.isEmailVerified property 来查看用户是否已通过验证。您可能遇到的主要问题是,在您单击电子邮件中的链接后,该属性不会立即刷新,因为 iOS 无法知道您单击了该链接。

    客户端会在刷新令牌时自动获取isEmailVerified 的新值,这会在每小时、用户再次显式登录或您显式force it to get a new ID token 时自动发生。

    让您的用户顺利运行此流程的常用方法是:

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多