![](/img/trans.png)
[英]Firebase Firestore doesn't update UI after deletion SwiftUI
[英]SwiftUI - Update password on Firebase
我正在尝试使用我在 Firebase 上的密码进行更新,但目前还无法正常工作。 希望你能帮我解决这个问题
形式
struct ChangePassword: View {
@State var oldPassword: String = ""
@State var newPassword: String = ""
@State var confirmPassword : String = ""
@ObservedObject var loginViewModel = LoginViewModel()
var body: some View {
ZStack {
VStack {
HStack {
Text("Old Pw")
.poppinsRegularFont(size: 17)
.foregroundColor(Color(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 1))).opacity(1)
SecureField("", text: $oldPassword)
.padding()
.font(Font.system(size: 15, weight: .medium, design: .serif))
.frame(width: UIScreen.main.bounds.width - 80,height: 48)
.background(
Color.black.opacity(0.1)
)
}
.padding(.bottom,20)
HStack {
Text("New Pw")
.poppinsRegularFont(size: 17)
.foregroundColor(Color(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 1))).opacity(1)
SecureField("", text: $newPassword)
.padding()
.font(Font.system(size: 15, weight: .medium, design: .serif))
.background(
Color.black.opacity(0.1)
)
}
.padding(.bottom,20)
HStack {
Text("Confirm Pw")
.poppinsRegularFont(size: 17)
.foregroundColor(Color(#colorLiteral(red: 0, green: 0, blue: 0, alpha: 1))).opacity(1)
SecureField("", text: $confirmPassword)
.padding()
.font(Font.system(size: 15, weight: .medium, design: .serif))
.background(
Color.black.opacity(0.1)
)
}
Button(action: {
loginViewModel.updatePassword(password: confirmPassword)
}) {
Text("Save")
}
}
}
}
}
函数更新密码
class LoginViewModel: ObservableObject {
let userPassword = Auth.auth().currentUser
var credential: AuthCredential?
func updatePassword(password: String) {
if let credential = credential {
userPassword?.reauthenticate(with: credential ) { error,_ in
if error != nil {
// An error happened.
} else {
Auth.auth().currentUser?.updatePassword(to: password) { (error) in
// ...
}
}
}
}
}
}
我正在尝试使用我在 Firebase 上的密码进行更新,但目前还无法正常工作。 希望你能帮我解决这个问题......................................
让用户 = Auth.auth().currentUser
let credential = EmailAuthProvider.credential(withEmail: user!.email!, password: currentPassword)
user?.reauthenticate(with: credential, completion: { (authResult, error) in
if let error = error {
// Handle re-authentication error
return
}
user?.updatePassword(to: newPassword, completion: { (error) in
if let error = error {
// Handle password update error
return
}
// Password update successful
})
})
您不需要重新验证用户,请写下面的代码
Auth.auth().currentUser?.updatePassword(to: newPasswordTF.text!) { (error) in
if let error = error as NSError? {
}
// Password change sucussfully
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.