我正在为我的iOS应用程序使用Firebase身份验证。现在我想检查输入的电子邮件地址是否可用。我发现我必须使用createUserWithEmailAndPassword
。但问题是我不想传递密码。我只想查看使用电子邮件。我怎么能这样做?
答案 0 :(得分:3)
可以验证Firebase身份验证中具有电子邮件地址的任何用户帐户,它不必是电子邮件+密码帐户。 To verify the email address for a user call user.sendEmailVerification()
如果您想在注册用户之前检查电子邮件地址是否已被使用,则Firebase管理员SDK会有look up a user by their email address的方法:admin.auth().getUserByEmail(email)
。此方法需要管理权限,并且(与所有Admin SDK一样)只应在受信任的环境中运行 - 通常是您控制的服务器或Firebase的Cloud Functions。
最后注意事项:请注意,即使您在注册前检查电子邮件地址是否可用,但在您致电createUserWithEmailAndPassword()
时,其他用户可能会声明该电子邮件地址。正如Jen评论的那样:如果电子邮件地址已被使用,您还需要处理createUserWithEmailAndPassword()
引发的错误。
答案 1 :(得分:3)
以下是您可能正在寻找的Firebase function的结构(Swift 4):
Auth.auth().fetchProviders(forEmail: emailAddress, completion: {
(providers, error) in
if let error = error {
print(error.localizedDescription)
} else if let providers = providers {
print(providers)
}
})
如果电子邮件地址已经注册到用户,您将获得该电子邮件地址用于的提供商列表。否则,提供者列表将为空,因此电子邮件地址未注册。
答案 2 :(得分:2)
您需要使用fetchProvidersForEmail:completion: https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIRAuth#-fetchprovidersforemailcompletion
它将返回与该电子邮件关联的提供者ID列表。如果您在列表中显示“密码”,则该电子邮件已存在电子邮件/密码帐户,您可以显示登录页面。
答案 3 :(得分:0)
很遗憾,您无法使用Firebase执行此操作。电子邮件帐户也需要密码。
如果您不希望用户输入密码,您可以使用其他帐户选项,例如Facebook,Google,Twitter等。
答案 4 :(得分:0)
您只需要在用户注册父母"用户"您的firebaseDB的电子邮件ID已注册为"电子邮件"使用firebase应用程序并在检查是否存在电子邮件时运行以下查询调用
let databaseReff = Database.database().reference().child("users")
databaseReff.queryOrdered(byChild: "email").queryEqual(toValue: self.emailTextField.text!).observe(.value, with: { snapshot in
if snapshot.exists(){
//User email exist
}
else{
//email does not [email id available]
}
})