我是Swift和Firebase的新手。我正在开发一个IOS应用程序。对于此应用程序,我需要验证用户的电子邮件和密码。我有一个包含用户详细信息的Json文件。请帮我验证如何验证用户的电子邮件和密码?我已经阅读了Stackoverflow中的几篇帖子,但我被卡住了。 以下是我的Json和swift代码。
Json文件:
{
"ID": 123,
"Membership": 1234,
"title": "Mr.",
"firstname": "kumar",
"lastname": "sandeep",
"email": "sandeepcs2005@gmail.com",
"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("mr.stefankirsch@gmx.com")
// Consider adding ".indexOn": "email" at /hubeindhoven-95f09 to your security rules for better performance
userRef.queryOrderedByChild("email").queryEqualToValue("mr.sandeep@gmail.com").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 :(得分:1)
我认为您的firebase json所发布的内容是错误的,您是否按照标准方式添加用户(在firebase Web界面中)。 每个用户没有唯一的ID。例如,我添加了一个......
{
"users" : {
“UOLTzymgIyeGgNBSS0UgUs95od21” : {
"email" : "aaaaa@gmail.com",
"firstName" : "aaaaa",
"lastName" : “bbbb”,
"mobileNo" : 12122121
},
“CveQ13sLmMO93yHZEAP24xHA3VZ1” : {
"email" : "bbbb@gmail.com",
"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!)
}
答案 1 :(得分:1)
有一些问题需要解决。
第一个是Firebase为您处理电子邮件/密码身份验证,创建Firebase用户后,身份验证非常简单:
FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
// ...
}
不需要Firebase中的其他JSON结构。但是,如果要存储有关每个用户的其他信息,则可以使用用户标识(uid)。在firebase中创建用户时会自动生成该uid,然后您还可以创建一个单独的节点来包含其他用户信息
users
uid_0
name: "Leeeeroy"
favorite_game: "WoW"
由于您已经拥有JSON结构中的用户,我建议您制作一个快速应用来迭代这些用户,创建他们的Firebase帐户并将个人数据添加到用户节点。
创建用户也很简单
FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
// ...
}
如果确实不想创建Firebase用户,您可以推出自己的身份验证方案(不推荐)。