-->

火力地堡验证lastSignInDate和creationDate比较失败(Firebase Aut

2019-10-16 13:02发布

首先我需要在这种情况下,知道这是第一个用户登录(登录-后注册也算作第一),所以我可以将它们添加到数据库中。 为了这个目的,我有这样的检查:

func isNewUser(userMetadata: UserMetadata) -> Bool {
    return userMetadata.creationDate == userMetadata.lastSignInDate && !UserDefaults.standard.hasLoggedIn
}

我需要UserDefaults检查,因为creationDate和lastSignInDate将等于直到用户注销的那一刻。

一切正常,直到今天,当我得到这些奇怪的日志:

(lldb) po userMetadata.creationDate
▿ Optional<Date>
  ▿ some : 2019-02-06 21:18:15 +0000
    - timeIntervalSinceReferenceDate : 571180695.0

(lldb) po userMetadata.lastSignInDate
▿ Optional<Date>
  ▿ some : 2019-02-06 21:18:15 +0000
    - timeIntervalSinceReferenceDate : 571180695.1040001

日期看起来是一样的,但对平等检查失败。

在那里我调用的代码isNewUser

authListener = Auth.auth().addStateDidChangeListener { [unowned self] (auth, user) in
   if let firebaseUser = user, Auth.auth().isNewUser(userMetadata: firebaseUser.metadata) {
       self.handleNewUser(firebaseUser)
   }
}

该文件并没有说太多关于首次登录。 我知道有一个isNewUser物业AdditionalUserInfo类,但我不知道我该如何使用它。 因此,任何帮助将不胜感激。 谢谢

Answer 1:

firebaser这里

这可能与一些后端的变化,我们正在研究。 就目前而言,你可以四舍五入的值timeIntervalSinceReferenceDate比较之前。

但最好使用AdditionalUserInfo.newUser此检查这些天。 你从AuthDataResult ,经过这么直如用户的迹象,例如用signIn(withEmail:password:completion:) 。 在FirebaseUI,你还可以得到AuthDataResult如下所示: https://github.com/firebase/FirebaseUI-iOS/tree/master/Auth#sign-in



文章来源: Firebase Auth lastSignInDate and creationDate comparison failure