簡體   English   中英

Firebase Phone Auth使應用程序崩潰

[英]App crashes with Firebase Phone Auth

我希望這個問題不會重復,因為我找不到類似的東西。

我有兩個視圖控制器:

NEWPhoneAuthViewController

NEWVerifyCodeViewController

NEWPhoneAuthViewController代碼:

        import UIKit
import Firebase

class NEWPhoneAuthViewController: UIViewController {

    @IBOutlet weak var phoneTxtField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func submitPressed(_ sender: Any) {

        let phoneNumber = phoneTxtField.text!

        PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil, completion: { (verificationID, error) in

            if let error = error {
                debugPrint(error.localizedDescription)
                return
            }

            guard let verificationID = verificationID else { return }
            print("Verification ID")
            print(verificationID)
            let verifyScene = NEWVerifyCodeViewController()
            verifyScene.verificationID = verificationID

            self.performSegue(withIdentifier: "toCodefromPhoneAuth", sender: nil)
            //self.navigationController?.pushViewController(verifyScene, animated: true)
        })

    }


}

而我的NEWVerifyCodeViewController代碼是:

    import UIKit
import Firebase

class NEWVerifyCodeViewController: UIViewController {

    @IBOutlet weak var codeTxtField: UITextField!

    var verificationID:String?

    override func viewDidLoad() {
        super.viewDidLoad()

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func verifyPressed(_ sender: Any) {
        if let verificationCode = codeTxtField.text {
            let credential = PhoneAuthProvider.provider().credential(withVerificationID: verificationID!, verificationCode: verificationCode)
            Auth.auth().signIn(with: credential) { (user, error) in
                if let error = error {
                    debugPrint(error.localizedDescription)
                }else {
                    debugPrint("Verified successfully")

                    print("Navigating to SignUp")

                    //self.performSegue(withIdentifier: "toSignUpfromCode", sender: nil)

                    //let newSignUp = NEWSignUp()
                    //self.navigationController?.pushViewController(newSignUp, animated: true)

                    //self.performSegue(withIdentifier: "toSignUpFromPhone", sender: nil)
                    //Once you have verified your phone number kill the firebase session.
                    //try? Auth.auth().signOut()

                }
            }
        }
    }
}

現在的問題是:當我點擊NEWVerifyCodeViewController中的驗證按鈕時,應用崩潰了,

筆記:

  • 我打印了驗證ID,但不為NULL。
  • 我打印了用戶收到的代碼,它不是NULL。

因此,我不確定為什么會發生這種情況,並且在點擊之后,我的控制台沒有顯示任何錯誤,除了以下幾點:

在此處輸入圖片說明

因此,我做了一個小調整,使我的項目正常工作。

我在NEWPhoneAuthViewController更改了此部分:

let verifyScene = NEWVerifyCodeViewController()
verifyScene.verificationID = verificationID

至:

首先創建一個名為gVerificationID的全局變量,並將其設置為:

gVerificationID = verificationID

就是這樣,不確定是否是最佳實踐,也不確定為什么第一個代碼不起作用,但這就是我解決的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM