【发布时间】:2018-11-28 10:09:18
【问题描述】:
我正在为我的 firebase 应用程序构建一个管理面板,并且希望能够更轻松地管理用户。我希望能够通过电子邮件查找用户,然后在必要时将其删除。我知道 fetchSignInMethods 将返回一个值,如果用户已注册以及他们注册了哪个提供商,但无论如何查询身份验证树(而不是数据库树)以通过电子邮件搜索用户?如果能够从身份验证节点获取电子邮件关联的 UID,那就太好了。
目前我的应用程序仅使用电子邮件/密码身份验证(没有 facebook、twitter 等),这是我检查用户是否已注册的方式:
private func showIfUserIsRegistered(with email: String) {
Auth.auth().fetchSignInMethods(forEmail: email) { (providers, error) in
if error != nil {
KVNProgress.showError(withStatus: error.debugDescription)
return
}
let doesntExist = "No, this user doesn't exist."
let exists = "Yes, user exists and is registered."
let passwordProvider = "password"
guard let sources = providers else {
KVNProgress.showError(withStatus: doesntExist)
return
}
let registered = sources.first == passwordProvider ? exists : doesntExist
KVNProgress.showSuccess(withStatus: registered)
}
}
我确实将用户的信息保存在数据库节点中,并且我可以查询,但是,对于超过 75k 的用户,调用成本很高并且需要一段时间才能返回,并且在身份验证调用的情况下也无济于事注册用户成功,但将其详细信息存储到数据库节点不成功。
【问题讨论】:
标签: swift firebase firebase-realtime-database firebase-authentication