繁体   English   中英

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

[英]How to check if an email address is already in use in Firebase on iOS?

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

以下是您可能正在寻找的Firebase函数的结构(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)
        }
    })

如果电子邮件地址已经注册给用户,您将获得使用该电子邮件地址的提供商的列表。 否则,提供者列表将为空,因此未注册电子邮件地址。

Firebase身份验证中具有电子邮件地址的任何用户帐户都可以进行验证,而不必是电子邮件+密码帐户。 要验证用户的电子邮件地址,请致电user.sendEmailVerification()

如果要在注册用户之前检查电子邮件地址是否已在使用中,则Firebase Admin SDK提供了一种通过用户的电子邮件地址查找用户的方法: admin.auth().getUserByEmail(email) 此方法需要管理权限,并且(像所有Admin SDK一样)应仅在受信任的环境中运行-通常是您控制的服务器或Firebase的Cloud Functions。

最后要注意:请注意,即使您在注册之前检查电子邮件地址是否可用,在您调用createUserWithEmailAndPassword()时,另一个用户也可能已声明该电子邮件地址。 因此,正如Jen所说:如果电子邮件地址已被使用,您还需要处理createUserWithEmailAndPassword()引发的错误。

您需要使用fetchProvidersForEmail:completion: https ://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIRAuth#-fetchprovidersforemailcompletion

它将返回与该电子邮件关联的提供商ID列表。 如果列表中显示“密码”,则该电子邮件已经存在一个电子邮件/密码帐户,则可以显示登录页面。

不幸的是,您无法使用Firebase做到这一点。 电子邮件帐户还需要密码。

如果您不希望用户输入密码,则可以使用其他帐户选项,例如Facebook,Google,Twitter等。

您只需在用户在firebaseDB的父“用户”中注册时创建一个引用,这些父母的电子邮件ID已在firebase应用程序中注册为“ email”,并在检查电子邮件是否存在时运行以下查询调用

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

                    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM