2017-02-15 5 views
0

Я новичок в Swift и Firebase. Я разрабатываю приложение IOS. Для этого приложения мне нужно аутентифицировать электронную почту пользователя и пароль. У меня есть Json-файл с подробностями пользователя. Пожалуйста, помогите мне, как аутентифицировать электронную почту пользователя и пароль? Я прочитал несколько сообщений в Stackoverflow, но я застрял. Ниже приведены мои Json и быстрый код.Как аутентифицировать электронную почту пользователя и пароль с помощью Firebase в Swift

Json файл:

{ 
    "ID": 123, 
    "Membership": 1234, 
    "title": "Mr.", 
    "firstname": "kumar", 
    "lastname": "sandeep", 
    "email": "[email protected]", 
    "membrshipstatus": "Active", 
    "volunteer": "Yes", 
    "creationDate": "2016-12-27 " 
}, 

Это мой скор код:

import UIKit 
import Firebase 
import FirebaseAuth 



class ViewController: UIViewController { 

    @IBOutlet weak var emailofUser: UITextField! 
    @IBOutlet weak var passwordofUser: UITextField! 
    var ref:FIRDatabaseReference! //created a variable ref of type firebase database reference 
    var databaseHandle:FIRDatabaseHandle? //to handle to database listener like to stop or start it 



    var postdata = [String]?() 
    var postall = [[String:String]]() 



    override func viewDidLoad() { 
     super.viewDidLoad() 



      //set firebase reference 
     ref = FIRDatabase.database().reference() 

     let userRef = ref.child("Hub") 
     //let queryRef = userRef.queryOrderedByChild("email").queryEqualToValue("[email protected]") 


     // Consider adding ".indexOn": "email" at /hubeindhoven-95f09 to your security rules for better performance 


     userRef.queryOrderedByChild("email").queryEqualToValue("[email protected]").observeEventType(.Value, withBlock: { snapshot in 

      for child in snapshot.children { 

      let snap = child as! FIRDataSnapshot 

       let userDict = snap.value as! [String:Any] 

       let userId = userDict["ID"] 
       let lastname = userDict["lastname"] 
       print("\(userId!) \(lastname!)") 


      } 
        }) 
+0

Посмотрите это: http://stackoverflow.com/a/40762653/3108877 – Rob

+0

Привет, Роб, спасибо. Но это не отвечает на мой вопрос. У меня уже есть пользователи в файле JSON, и я должен их проверить. Как я могу это сделать? Пожалуйста помоги. –

ответ

3

Я думаю, что ваш firebase JSON, что вы выложили это неправильно, вы следуете стандартный способ, чтобы добавить пользователя (в firebase веб интерфейс). Для каждого пользователя нет уникального идентификатора. Например, я добавил один мой ..

{ 
    "users" : { 
    “UOLTzymgIyeGgNBSS0UgUs95od21” : { 
     "email" : "[email protected]", 
     "firstName" : "aaaaa", 
     "lastName" : “bbbb”, 
     "mobileNo" : 12122121 
    }, 
    “CveQ13sLmMO93yHZEAP24xHA3VZ1” : { 
     "email" : "[email protected]", 
     "firstName" : “bbbb”, 
     "lastName" : “bbbbb”, 
     "mobileNo" : 11223333 
    } 
    } 
} 

Я добавил код для входа в аккаунт, это работает для меня, надеюсь, что это решит вашу проблему

override func viewDidLoad() { 
     super.viewDidLoad() 

     FIRAuth.auth()!.addStateDidChangeListener() { auth, user in 
      if user != nil { 
       self.performSegueWithIdentifier("UserDetails", sender: self) 
      } 
     } 
    } 

@IBAction func LoginPage(sender: UIButton) { 
     FIRAuth.auth()!.signIn(withEmail: textFieldLoginEmail.text!, 
           password: textFieldLoginPassword.text!) 
} 
+0

Привет @ Джей, Спасибо за прекрасный ответ. В моей ситуации пользователи уже созданы и данные хранятся в базе данных Easy dus. Поэтому теперь мне нужно экспортировать данные пользователя (email, passoword, name и т. Д.) В CSV и преобразовать его в JSON. Затем мне нужно импортировать файл JSON и аутентифицировать пользователей. –

+0

@Jay Теперь мне нужно импортировать файл JSON в базу данных, и мне нужно проверить логин пользователя. Как я могу это достичь? Пожалуйста, помогите –

+0

Привет, Ратнес, спасибо за отличный ответ. Структура JSON, которую я опубликовал, является примером, но вскоре я отправлю требуемый файл JSON. –

1

Есть несколько вопросов которые необходимо решить.

Первый, который Firebase выполняет проверку подлинности электронной почты/пароль для вас, и один раз в Firebase пользователя создается, удостоверение подлинности очень проста:

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

Дополнительной структура JSON в Firebase не требуется. Однако, если вы хотите хранить дополнительную информацию о каждом пользователе, это означает, что использовать идентификатор пользователя (uid) пользователя. Этот UID будет автоматически генерируется при создании пользователя в firebase, а затем вы можете также создать отдельный узел содержать другую Информацию о пользователе

users 
    uid_0 
    name: "Leeeeroy" 
    favorite_game: "WoW" 

Видя, как у вас уже есть пользователи в структуре JSON, я бы рекомендовал крафт вверх быстрое приложение для итерации по этим пользователям, создание их учетной записи Firebase и добавление личных данных в узел пользователя.

Создание пользователей также просто

FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in 
    // ... 
} 

Если вы действительно не хотите создавать пользователь Firebase, вы можете свернуть свою собственную схему аутентификации (не рекомендуется, однако).