Ios 如何在Swift中使用Firebase验证用户电子邮件和密码
我是新来的斯威夫特和消防基地。我正在开发一个IOS应用程序。对于此应用程序,我需要验证用户电子邮件和密码。我有一个包含用户详细信息的Json文件。请帮助我如何验证用户电子邮件和密码?我在Stackoverflow上读了好几篇文章,但我被卡住了。 以下是我的Json和swift代码 Json文件:Ios 如何在Swift中使用Firebase验证用户电子邮件和密码,ios,json,swift,firebase,firebase-authentication,Ios,Json,Swift,Firebase,Firebase Authentication,我是新来的斯威夫特和消防基地。我正在开发一个IOS应用程序。对于此应用程序,我需要验证用户电子邮件和密码。我有一个包含用户详细信息的Json文件。请帮助我如何验证用户电子邮件和密码?我在Stackoverflow上读了好几篇文章,但我被卡住了。 以下是我的Json和swift代码 Json文件: { "ID": 123, "Membership": 1234, "title": "Mr.", "firstname": "kumar", "lastname": "sa
{
"ID": 123,
"Membership": 1234,
"title": "Mr.",
"firstname": "kumar",
"lastname": "sandeep",
"email": "sandeepcs2005@gmail.com",
"membrshipstatus": "Active",
"volunteer": "Yes",
"creationDate": "2016-12-27 "
},
这是我的swift代码:
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!)")
}
})
我认为您发布的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
}
}
}
我已经为signin添加了代码,这对我很有效,希望这能解决您的问题
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!)
}
我认为您发布的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
}
}
}
我已经为signin添加了代码,这对我很有效,希望这能解决您的问题
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!)
}
有几个问题需要解决 第一个是Firebase为您处理电子邮件/密码身份验证,一旦创建了Firebase用户,身份验证就非常简单:
FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
// ...
}
Firebase中不需要额外的JSON结构。但是,如果您想存储关于每个用户的附加信息,则可以使用用户id(uid)。该uid在firebase中创建用户时自动生成,然后您还可以创建一个单独的节点来包含其他用户信息
users
uid_0
name: "Leeeeroy"
favorite_game: "WoW"
鉴于您已经有JSON结构的用户,我建议您制作一个快速应用程序来迭代这些用户,创建他们的Firebase帐户,并将个人数据添加到用户节点
创建用户也很简单
FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
// ...
}
如果您确实不想创建Firebase用户,您可以推出自己的身份验证方案(但不推荐)。有几个问题需要解决 第一个是Firebase为您处理电子邮件/密码身份验证,一旦创建了Firebase用户,身份验证就非常简单:
FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
// ...
}
Firebase中不需要额外的JSON结构。但是,如果您想存储关于每个用户的附加信息,则可以使用用户id(uid)。该uid在firebase中创建用户时自动生成,然后您还可以创建一个单独的节点来包含其他用户信息
users
uid_0
name: "Leeeeroy"
favorite_game: "WoW"
鉴于您已经有JSON结构的用户,我建议您制作一个快速应用程序来迭代这些用户,创建他们的Firebase帐户,并将个人数据添加到用户节点
创建用户也很简单
FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
// ...
}
如果你真的不想创建Firebase用户,你可以推出自己的身份验证方案(但不推荐)。看这个:嗨,Rob,谢谢。但这并不能回答我的问题。我已经有JSON文件中的用户,我必须验证他们。我该怎么做?请帮忙。看这个:嗨,罗布,谢谢。但这并不能回答我的问题。我已经有JSON文件中的用户,我必须验证他们。我该怎么做?请帮忙。嗨@Jay,谢谢你的精彩回复。在我的情况下,用户已经创建,数据存储在Easy dus数据库中。因此,现在我必须以CSV格式导出用户详细信息(电子邮件、密码、姓名等),并将其转换为JSON。然后我必须导入JSON文件并对用户进行身份验证。@Jay现在我需要将JSON文件导入数据库,并验证用户登录。我怎样才能做到这一点?请帮助Hi Ratnesh,谢谢您的精彩回复。我发布的JSON结构就是一个例子,但很快我就会发布所需的JSON文件。你的JSON文件位于哪里,在数据库中还是?嗨,大家好,我已经更改了JSON文件,这正是我正在处理的结构。嗨@Jay,谢谢你的精彩回复。在我的情况下,用户已经创建,数据存储在Easy dus数据库中。因此,现在我必须以CSV格式导出用户详细信息(电子邮件、密码、姓名等),并将其转换为JSON。然后我必须导入JSON文件并对用户进行身份验证。@Jay现在我需要将JSON文件导入数据库,并验证用户登录。我怎样才能做到这一点?请帮助Hi Ratnesh,谢谢您的精彩回复。我发布的JSON结构就是一个例子,但很快我就会发布所需的JSON文件。您的JSON文件位于哪里,是在数据库中还是?您好,我已经更改了JSON文件,这正是我正在处理的结构。