【发布时间】:2021-09-27 04:43:42
【问题描述】:
我正在尝试在 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 上更新我的密码,但它还没有工作。希望您能帮我解决这个问题.......................................
【问题讨论】:
-
一个叫'credential'的人从何而来?
-
您的 Auth.auth().currentUser?.updatePassword(to: password) 方法中一个名为“password”的人从何而来?
-
这是因为我自己阅读了文档。如果有不对的地方,请帮我改正
-
@ElTomato 我看它:firebase.google.com/docs/auth/ios/manage-users#swift
-
据我所知,您永远不会将
credential传递给您的 LoginViewModel。究竟是什么问题?你已经调试过这个了吗?
标签: swift firebase swiftui firebase-authentication