将用户注册到firebase并登录(如果已注册)

时间:2017-08-03 16:54:25

标签: ios swift firebase firebase-authentication

我有以下代码将用户注册到firebase ...

FIRAuth.auth()?.createUserWithEmail(email.text!, password: password.text!) {(user, error) in
            if let error = error {
                print(error.localizedDescription)
                if error.localizedDescription == "FIRAuthErrorCodeEmailAlreadyInUse"
                {
                   //sign in here?
                }

            }
            else {
                print("User signed in!")
            }
        } }
    else{
        print("You left email/password empty")
    }

我会添加什么,以便在用户已创建时自动登录?

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用Firebase提供的任何身份验证方法。例如。在你的情况下,这个是最合适的:

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
  // ...
}

Source

修改

您发布的注册方法的错误响应将告诉您给定用户是否已存在。在这种情况下,您可以在回调中自动调用signIn方法。

查看official docs,我看到你应该寻找的错误代码是FIRAuthErrorCodeEmailAlreadyInUse。

答案 1 :(得分:0)

您可以事先检查require 'prawn' data = {"id"=>123456, "documentKey"=>"xyz", "globalId"=>"xyz", "itemType"=>1234, "project"=>123, "createdDate"=>"2015-02-20T00:11:56.000+0000", "modifiedDate"=>"2015-02-20T00:11:56.000+0000", "lastActivityDate"=>"2016-03-02T16:23:52.000+0000", "createdBy"=>1234, "modifiedBy"=>12342, "fields"=>{"name"=>"Introduction", "globalId"=>"Text", "documentKey"=>"Text-2", "description"=>" Some introduction"}} Prawn::Document.generate('example.pdf') do text "Project: #{data['project']}" text "Item Type: #{data['itemType']}" text "Description: #{data['fields']['description']}" end 是否不是currentUser

nil

来自Firebase文档:

  

您还可以使用currentUser属性获取当前登录的用户。如果用户未登录,则currentUser为nil:

答案 2 :(得分:0)

另一种方法是使用fetchProvidersForEmail:completion:https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIRAuth#-fetchprovidersforemailcompletion来检查电子邮件是否首先存在。

这将返回与该电子邮件关联的提供者ID列表。如果你得到密码'在列表中,该电子邮件已存在电子邮件/密码帐户,您可以致电signIn(withEmail: email, password: password)。否则,您拨打createUserWithEmail(email, password: password)