iOS Firebase身份验证:verficationID为空

时间:2020-05-09 20:06:57

标签: swift firebase firebase-authentication

加载此视图时,它将正确打印出self.verificationID。但是,在调用submitVerificationCode()时,它说self.verificationID是空字符串。

我不知道是什么原因造成的。有人有什么想法吗?

也-重新发送代码似乎会使它正常工作。

import SwiftUI
import Firebase

struct VerifyPhoneView: View {

    private var phoneNumber: String
    @State private var verificationID: String
    @State private var verificationCode: String = ""
    @State private var loginSuccesful: Bool = false
    @EnvironmentObject var ls: LoginStatus

    init(phoneNumber: String, verificationID: String) {
        self.phoneNumber = phoneNumber
       _verificationID = State(initialValue: verificationID)
        print(self.verificationID)
    }

    var body: some View {

        ZStack {

            Text("My code is")

            HStack {
                Text(phoneNumber)

                Button(action: {
                    self.submitPhoneNumber()
                }) {
                    Text("Resend")
                }
            }

            TextField("Enter code", text: $verificationCode)

            Button(action: {
                self.submitVerificationCode()
            }) {
                Text("Continue")
            }

        }

    }

    func submitPhoneNumber() {
        PhoneAuthProvider.provider().verifyPhoneNumber("+1" + phoneNumber, uiDelegate: nil) { (verificationID, error) in
            if error != nil {
                print(error.debugDescription)
                return
            }
            else {
                print(verificationID!)
                self.verificationID = verificationID!
            }
        }
    }

    func submitVerificationCode() {
        print ("SubmitVerificationCode() (verifID): " + $verificationID.wrappedValue)

        let credential = PhoneAuthProvider.provider().credential(
            withVerificationID: self.verificationID,
            verificationCode: self.verificationCode)

        Auth.auth().signIn(with: credential) { (user, error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }
            // User is signed in
            print("User signed in succesfully")
            self.loginSuccesful = true
            self.ls.isLoggedIn = true
        }
    }



}

0 个答案:

没有答案