加载此视图时,它将正确打印出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
}
}
}