云Firestore身份验证iOS
我对iOS开发非常陌生(边学边用),我正在使用CloudFireStore通过电子邮件/密码对用户进行身份验证。我正在尝试做一个简单的电子邮件和密码验证。我使用了文档中的一个db规则,我认为我不必在规则中创建集合和文档。我已经测试了我与数据库的连接,所以这也不是问题。我目前掌握的代码如下:云Firestore身份验证iOS,ios,swift,firebase-authentication,google-cloud-firestore,Ios,Swift,Firebase Authentication,Google Cloud Firestore,我对iOS开发非常陌生(边学边用),我正在使用CloudFireStore通过电子邮件/密码对用户进行身份验证。我正在尝试做一个简单的电子邮件和密码验证。我使用了文档中的一个db规则,我认为我不必在规则中创建集合和文档。我已经测试了我与数据库的连接,所以这也不是问题。我目前掌握的代码如下: import UIKit import Firebase class SignUpViewController: UIViewController { //Outlets @IBOutl
import UIKit
import Firebase
class SignUpViewController: UIViewController {
//Outlets
@IBOutlet weak var firstNameText: UITextField!
@IBOutlet weak var lastNameText: UITextField!
@IBOutlet weak var emailText: UITextField!
@IBOutlet weak var passwordText: UITextField!
@IBOutlet weak var signUpButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func signUpButtonTapped(_ sender: Any) {
guard let firstName = firstNameText.text,
let lastName = lastNameText.text,
let email = emailText.text,
let password = passwordText.text else { return }
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
if let error = error {
debugPrint("Error creating user: \(error.localizedDescription)")
}
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = firstName
changeRequest?.commitChanges(completion: { (error) in
if let error = error {
debugPrint(error.localizedDescription)
}
})
guard let userId = authResult?.user else { return }
Firestore.firestore().collection(USERS_REF).document(userId).setData([
USERNAME : firstName,
DATE_CREATED : FieldValue.serverTimestamp()
], completion: { (error) in
if let error = error {
debugPrint(error.localizedDescription)
} else {
self.dismiss(animated: true, completion: nil)
}
})
}
}
}
但我得到了一个错误:
- 无法使用类型为“([String:Any],completion:((Error?->Void)?”的参数列表调用“setData”
有什么我没做的吗?是否有人可以帮助进行此电子邮件/密码验证 首先检查变量如何正确命名。在swift中,我们使用camelCase 其次,您尝试将textField对象分配给字典中的密码 第三,您尝试打印并在登录操作之外执行一系列操作。 考虑编辑你的代码:
@IBAction func SMLoginTapped(_ sender: Any) {
print("Login button tapped!")
guard let emailText = EmailTextField.text, !emailText.isEmpty else { return }
guard let passwordText = PasswordTextField.text, !passwordText.isEmpty else { return }
let saveData: [String: Any] = ["email": emailText, "password": passwordText]
docRef.setData(saveData) { (error) in
if let error = error {
print("Oh no! Got an error: \(error.localizedDescription)")
} else {
print("Data has been saved to Firestore!")
self.performSegue(withIdentifier: "SecondViewSegue", sender: self)
}
}
}
谢谢你,项目现在已经建立了,但是它不会登录用户。它识别点击(给出“login button tapped”(登录按钮点击)消息),但实际上并不登录用户并转到下一个阶段。有什么原因吗?试着用
db
代替docRef
我采取了不同的方法,但不确定上面的错误。我将用户引用更改为authResult,然后出现了此错误。知道如何排除故障吗@迪奥尼兹布