我一直在試圖找出這個問題了幾天,似乎無法找到一個解決方案。當我在我的應用程序中按創建帳戶,它創建它沒有任何信息
問題是:當我嘗試在我的應用程序中創建一個帳戶時,它會自動創建一個帳戶而不輸入任何信息。所以基本上用戶不會輸入任何信息,帳戶仍在創建。
我目前使用火力地堡
下面是該視圖的代碼:
import UIKit
import Firebase
class createAccountVC: UIViewController {
private let RIDER_SEGUE = "createAccountSegue"
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var confirmPasswordTextField: UITextField!
@IBOutlet weak var createAccountButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
createAccountButton.titleLabel?.numberOfLines = 2
createAccountButton.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
}
private func alertTheUser(title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(ok)
present(alert, animated: true, completion: nil)
}
@IBAction func signUp(_ sender: AnyObject) {
if emailTextField.text != "" && passwordTextField.text != "" && confirmPasswordTextField.text != "" {
AuthProvider.Instance.signUp(withEmail: emailTextField.text!, password: passwordTextField.text!, loginHandler: { (message) in
if message != nil {
self.alertTheUser(title: "Problem with creating a new user.", message: message!)
} else {
GroomrHandler.Instance.rider = self.emailTextField.text!
self.saveUserInfo(email: self.emailTextField.text!, password: self.passwordTextField.text!)
self.emailTextField.text = ""
self.passwordTextField.text = ""
self.confirmPasswordTextField.text = ""
//self.performSegue(withIdentifier: self.RIDER_SEGUE, sender: nil)
// save password to keychain
}
})
} else {
alertTheUser(title: "Email and password are required.", message: "Please enter email and password in the text fields.")
}
}
func saveUserInfo(email: String, password: String) {
//save login info in app
UserDefaults.standard.set(email, forKey: "email")
}
}
預先感謝您!不要火焰我,我還在學習XD
編輯:這裏是AuthProvider文件:
import Foundation
import Firebase
typealias LoginHandler = (_ msg: String?) -> Void
struct LoginErrorCode {
static let INVALID_EMAIL = "Invalid email address, please provide a real email address."
static let WRONG_PASSWORD = "Wrong password, please enter the correct password."
static let PROBLEM_CONNECTING = "Problem connecting to database, please try later."
static let USER_NOT_FOUND = "User not found, please register."
static let EMAIL_ALREADY_IN_USE = "Email already in use, please use another email."
static let WEAK_PASSWORD = "Password should be at least 6 characters long."
}
class AuthProvider {
private static let _instance = AuthProvider()
static var Instance: AuthProvider {
return _instance
}
func login(withEmail: String, password: String, loginHandler: LoginHandler?) {
Auth.auth().signIn(withEmail: withEmail, password: password, completion: { (user, error) in
if error != nil {
self.handleErrors(err: error! as NSError, loginHandler: loginHandler)
} else {
loginHandler?(nil)
}
})
} // login func
func signUp(withEmail: String, password: String, loginHandler: LoginHandler?) {
Auth.auth().createUser(withEmail: withEmail, password: password, completion: { (user, error) in
if error != nil {
self.handleErrors(err: error! as NSError, loginHandler: loginHandler)
} else {
if user?.uid != nil {
// login the user
self.login(withEmail: withEmail, password: password, loginHandler: loginHandler)
}
}
})
} // sign up func
func logOut() -> Bool {
if Auth.auth().currentUser != nil {
do {
try Auth.auth().signOut()
return true
} catch {
return false
}
}
return true
}
private func handleErrors(err: NSError, loginHandler: LoginHandler?) {
if let errCode = AuthErrorCode(rawValue: err.code) {
switch errCode {
case .wrongPassword:
loginHandler?(LoginErrorCode.WRONG_PASSWORD)
break
case .invalidEmail:
loginHandler?(LoginErrorCode.INVALID_EMAIL)
break
case .userNotFound:
loginHandler?(LoginErrorCode.USER_NOT_FOUND)
break
case .emailAlreadyInUse:
loginHandler?(LoginErrorCode.EMAIL_ALREADY_IN_USE)
break
case .weakPassword:
loginHandler?(LoginErrorCode.WEAK_PASSWORD)
break
default:
loginHandler?(LoginErrorCode.PROBLEM_CONNECTING)
break
}
}
}
} // class
你是什麼意思,它創建沒有任何信息的帳戶?我想你想要的是https://firebase.google.com/docs/auth/ios/start和這個Auth.auth()。createUser(withEmail:email,password:password)。 – Mike
同樣的問題,它仍然創建一個帳戶,即使我不把電子郵件,密碼,確認密碼,在文本框中,只是直接轉到其他視圖。 – Adeel
如果文本框中有值,它會創建一個包含憑據的帳戶? – Arrabidas92