这是我的代码
import UIKit
import Firebase
class LoginVC: UIViewController,UITextFieldDelegate {
@IBOutlet weak var emailTextField: RoundedCornerTextField!
@IBOutlet weak var passwordTextField: RoundedCornerTextField!
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var authBtn: RoundedShadowButton!
override func viewDidLoad() {
super.viewDidLoad()
emailTextField.delegate = self
passwordTextField.delegate = self
// Do any additional setup after loading the view.
view.bindToKeyboard()
let tap = UITapGestureRecognizer(target: self, action: #selector(tapHandler(sender:)))
self.view.addGestureRecognizer(tap)
}
@IBAction func dissmissBtnPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
@objc func tapHandler(sender : UITapGestureRecognizer) {
self.view.endEditing(true)
}
@IBAction func authBtnWasPressed(_ sender: Any) {
//TODO : SingIn methods here
if emailTextField.text != nil && passwordTextField.text != nil {
authBtn.animatedButton(shouldload: true, withMessage: nil)
self.view.endEditing(true)
if let email = emailTextField.text, let password = passwordTextField.text {
Auth.auth().signIn(withEmail: email, password: password, completion: { (authResult, error) in
if error == nil {
if let user = authResult?.user {
if self.segmentedControl.selectedSegmentIndex == 0 {
let userData = ["provider": user.providerID] as [String: Any]
DataService.instance.createFirbaseDBUser(uid: user.uid, userData: userData, isDriver: false)
} else {
let userData = ["provider" : user.providerID, "userIsDriver" : true, "isPickUpModeEnabaled" : false , "driverIsOnTrip": false ] as [String : Any]
DataService.instance.createFirbaseDBUser(uid: user.uid, userData: userData, isDriver: true)
}
}
print("Email user authenticated with firebase")
self.dismiss(animated: true, completion: nil)
}else {
Auth.auth().createUser(withEmail: email, password: password, completion: { (AuthDataResult, error) in
if error != nil {
if let errorCode = AuthErrorCode(rawValue: error! ._code){
switch errorCode {
case .invalidEmail:
print("wrong email")
case .invalidCustomToken:
print ("invalid creadentials")
case .customTokenMismatch:
print("Wrong password or emial")
case .invalidCredential:
print("invalid credential")
case .userDisabled:
print("unexpected error")
case .operationNotAllowed:
print("unexpected error")
case .emailAlreadyInUse:
print("unexpected error")
case .wrongPassword:
print("unexpected error")
case .tooManyRequests:
print("unexpected error")
case .userNotFound:
print("unexpected error")
case .accountExistsWithDifferentCredential:
print("unexpected error")
case .requiresRecentLogin:
print("unexpected error")
case .providerAlreadyLinked:
print("unexpected error")
case .noSuchProvider:
print("unexpected error")
case .invalidUserToken:
print("unexpected error")
case .networkError:
print("unexpected error")
case .userTokenExpired:
print("unexpected error")
case .invalidAPIKey:
print("unexpected error")
case .userMismatch:
print("unexpected error")
case .credentialAlreadyInUse:
print("unexpected error")
case .weakPassword:
print("unexpected error")
case .appNotAuthorized:
print("unexpected error")
case .expiredActionCode:
print("unexpected error")
case .invalidActionCode:
print("unexpected error")
case .invalidMessagePayload:
print("unexpected error")
case .invalidSender:
print("unexpected error")
case .invalidRecipientEmail:
print("unexpected error")
case .missingEmail:
print("unexpected error")
case .missingIosBundleID:
print("unexpected error")
case .missingAndroidPackageName:
print("unexpected error")
case .unauthorizedDomain:
print("unexpected error")
case .invalidContinueURI:
print("unexpected error")
case .missingContinueURI:
print("unexpected error")
case .missingPhoneNumber:
print("unexpected error")
case .invalidPhoneNumber:
print("unexpected error")
case .missingVerificationCode:
print("unexpected error")
case .invalidVerificationCode:
print("unexpected error")
case .missingVerificationID:
print("unexpected error")
case .invalidVerificationID:
print("unexpected error")
case .missingAppCredential:
print("unexpected error")
case .invalidAppCredential:
print("unexpected error")
case .sessionExpired:
print("unexpected error")
case .quotaExceeded:
print("unexpected error")
case .missingAppToken:
print("unexpected error")
case .notificationNotForwarded:
print("unexpected error")
case .appNotVerified:
print("unexpected error")
case .captchaCheckFailed:
print("unexpected error")
case .webContextAlreadyPresented:
print("unexpected error")
case .webContextCancelled:
print("unexpected error")
case .appVerificationUserInteractionFailure:
print("unexpected error")
case .invalidClientID:
print("unexpected error")
case .webNetworkRequestFailed:
print("unexpected error")
case .webInternalError:
print("unexpected error")
case .nullUser:
print("unexpected error")
case .keychainError:
print("unexpected error")
case .internalError:
print("unexpected error")
case .malformedJWT:
print("unexpected error")
}
}
}else {
if let user = authResult?.user {
if self.segmentedControl.selectedSegmentIndex == 0 {
let userdata = ["provider" : user.providerID] as [String : Any]
DataService.instance.createFirbaseDBUser(uid: user.uid, userData: userdata, isDriver: false)
} else {
let userData = ["provider" : user.providerID, "userIsDriver" : true, "isPickUpModeEnabaled" : false , "driverIsOnTrip": false ] as [String : Any]
DataService.instance.createFirbaseDBUser(uid: user.uid, userData: userData, isDriver: true)
}
}
print("Successfully created a new user ")
}
self.dismiss(animated: true, completion: nil )
})
}
}
)}
}
}
当我尝试使用错误的密码登录时,它会登录。我不知道我在哪里错了。
在我的Firebase控制台中,我可以看到用户使用UID进行身份验证,但是当我切换到数据库时,除了手动创建的表之外,没有任何其他东西。