javascript - Firebase - additionalInfo.isNewUser 始终返回“false”
问题描述
我使用 Node.js 使用 Firebase Admin SDK 在 Firebase 中创建新用户。
这个过程运行良好,我在我的 Firebase 控制台中看到了当然从未有过登录日期的新用户(德语中的“Angemeldet”):
现在我想检查用户的 iOS 登录,是否是他的第一次登录:
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let error = error
{
self.errorText = error.localizedDescription
self.shouldAnimate = false
return
}
guard user != nil else { return }
if let user = user, let additionalInfo = user.additionalUserInfo {
print(additionalInfo.isNewUser) // Always "false"
self.userViewModel.firstLogin()
}
}
additionalInfo.isNewUser 似乎正是我所需要的,但它总是返回“false”。
在 Node.js 中,我使用以下命令创建用户:
await admin.auth().createUser({
uid: uid.toLowerCase(),
email: uid.toLowerCase(),
emailVerified: true,
password: 'notSetYet',
disabled: false
})
这是一个错误,还是我做错了什么?
解决方案
该isNewUser
属性本质上比较creationDate
and的值,如果它们相等则lastSignInDate
返回。true
由于您的用户是在您登录客户端之前在服务器上创建的,因此时间戳将永远不会相同,并且isNewUser
始终是false
.
我能想到的两个主要选择是:
- 检查您认为用户为“新”的位置之间
lastSignInDate
的某个范围。creationDate
- 从您的 Swift 代码中存储您之前是否在云数据库(例如 Firebase 的实时数据库或 Cloud Firestore)中见过该用户,并检查以触发您需要的任何“新用户”行为。
推荐阅读
- sql - 如何在 SQL 中选择相同属性的 2 个值
- java - 当我尝试获取 swagger.json 时总是得到错误 404
- ruby-on-rails - 如何验证 has_one 关联是否存在?
- google-cloud-platform - 如何在 Google Cloud Platform 上提供以前创建的 Jupyter Notebook
- html - 如何查看我上传到 FTP 服务器的 Asp.Net MVC 页面?
- mysql - 为什么此代码不起作用“SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE '[aeiou]%'”
- ruby-on-rails - Rails新手:如何将封面图像添加到属于另一个模型的模型
- python - 重新索引特定级别的 pandas MultiIndex
- angular - 登录后返回用户信息(如角色)的好方法是什么?
- solr - Solr 术语方面比率