Firebase не может соответствовать коду для входа - PullRequest
0 голосов
/ 31 января 2019

Простите, что я новый программист, и я недавно посмотрел видео на Youtube, чтобы создать систему аутентификации телефона.Но я столкнулся с проблемой, то есть, даже если я не набрал какой-либо полученный код SMS или я умышленно набрал неправильный код, я все равно мог бы перейти на следующую страницу.

Точнее, он все еще функционируеткогда я нажимаю кнопку отправки кода SMS, мой телефон может получить сообщение с кодом SMS.Однако проблема в том, что, если я введу неправильный номер телефона и сфабрикованный код SMS, я все равно смогу перейти на следующую страницу.

Спасибо, если кто-нибудь может помочь.

Вот мой код:

import UIKit
import Firebase
import FirebaseAuth

class LoginViewController: UIViewController {

override func touchesBegan(_ touches: Set<UITouch>, with event: 
UIEvent?) {
self.view.endEditing(true)
}
func textFieldShouldReturn (_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return (true)
 }



override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}


 @IBOutlet weak var phoneNum: UITextField!
 @IBOutlet weak var code: UITextField!

@IBAction func codeTap(_ sender: Any) {
if (phoneNum.text?.characters.count)! > 6

{
let alert = UIAlertController(title: "Phone mumber", message: "Is 
this your phone number? \n \(phoneNum.text!)", preferredStyle: 
.alert)
let action = UIAlertAction(title: "Yes", style: .default) { 
(UIAlertAction) in

PhoneAuthProvider.provider().verifyPhoneNumber(self.phoneNum.text!, 
uiDelegate: nil) { (verificationID, error) in
        if error != nil {
            print("eror: \(String(describing: 
error?.localizedDescription))")
        } else {
            let defaults = UserDefaults.standard
            defaults.set(verificationID, forKey: "authVID")
        }
    }
}
let cancel = UIAlertAction(title: "No", style: .cancel, handler: 
nil)
alert.addAction(action)
alert.addAction(cancel)
self.present(alert, animated: true, completion: nil)

} else {
    createAlert(title: "Phone Number Wrong Format", message: "Should 
be in  XXXX XXXX")
}
}




func createAlert (title:String, message:String)
{
let alert = UIAlertController(title: title, message: message, 
preferredStyle: UIAlertController.Style.alert)

alert.addAction(UIAlertAction(title: "OK", style: 
UIAlertAction.Style.default, handler: { (action) in 
alert.dismiss(animated: true, completion: nil)
}))
self.present(alert, animated: true, completion: nil)
 }




@IBAction func Logon(_ sender: Any) {
let defaults = UserDefaults.standard
let credential: PhoneAuthCredential =  
PhoneAuthProvider.provider().credential(withVerificationID: 
defaults.string(forKey: "authVID")!, verificationCode: code.text!)

Auth.auth().signInAndRetrieveData(with: credential) { (user, error) 
in
    if error != nil {
        print("error: \(String(describing: 
error?.localizedDescription))")
    } else {
        print("Phone number: \(String(describing: 
user?.user.phoneNumber))")
        let userInfo = user?.user.providerData[0]
        print("Provider ID: \(String(describing: 
userInfo?.providerID))")
        self.performSegue(withIdentifier: "code3", sender: 
Any?.self)


    }
}

}



}

Вот отладочное сообщение: ошибка: Необязательно («Учетные данные авторизации телефона были созданы с пустым кодом подтверждения SMS.»)

...