【发布时间】:2022-01-11 20:21:35
【问题描述】:
我正在编写一个关于 SwiftUI 和 Firebase 的应用程序。目前,我已经通过电话号码实现了身份验证。当用户输入电话号码时,我会在 Firebase 中获取电话号码和 id 数据。但我也想从用户那里得到一张照片和一个名字。我可以在一个单独的窗口中实现它。问题是,如果用户退出应用程序并再次登录,应用程序会再次要求他上传照片并写下姓名。尽管有关此用户的数据已经在 Firebase 中。有没有办法在发送消息后检查用户是否已注册以显示或不显示带有照片和姓名请求的附加视图?
我的发送代码功能:
func sendCode() {
self.isLoading.toggle()
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber, uiDelegate: nil) { (verificationId, error) in
self.isLoading.toggle()
if error != nil {
self.isError.toggle()
self.errorMsg = error?.localizedDescription ?? ""
return
}
UserDefaults.standard.set(verificationId, forKey: "verificationId")
self.isVerify.toggle()
}
}
我的验证功能:
func verifyCode(code: String, name: String, num: String) {
self.isLoadingVerify.toggle()
let verificationId = UserDefaults.standard.string(forKey: "verificationId") ?? ""
let credentials = PhoneAuthProvider.provider().credential(withVerificationID: verificationId, verificationCode: code)
Auth.auth().signIn(with: credentials) { (authResult, error) in
self.isLoadingVerify.toggle()
self.userSession = authResult?.user
self.fetchUser()
if error != nil {
self.isError.toggle()
self.errorMsg = error?.localizedDescription ?? ""
return
}
guard let user = authResult?.user else { return }
self.tempCurrentUser = user
// self.userSession = user
let data = ["name": name.lowercased(),
"uid": user.uid,
"num": num
]
COLLECTION_USERS.document(user.uid).setData(data) { _ in
self.fetchUser()
// self.userSession = user
// self.fetchUser()убрал после того как не загрузилось фото профиля
}
print(authResult ?? "")
self.isVerify.toggle()
self.isVerified.toggle()
self.isPhotoName.toggle()
}
}
【问题讨论】:
标签: google-cloud-firestore swiftui firebase-authentication