Простите, что я новый программист, и я недавно посмотрел видео на 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.»)