如何检查iOS上的Firebase中是否已使用电子邮件地址?

时间:2017-07-27 17:17:21

标签: ios swift firebase firebase-authentication

我正在为我的iOS应用程序使用Firebase身份验证。现在我想检查输入的电子邮件地址是否可用。我发现我必须使用createUserWithEmailAndPassword。但问题是我不想传递密码。我只想查看使用电子邮件。我怎么能这样做?

5 个答案:

答案 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]
                        }

                    })
相关问题