swift - SwiftUI - 在 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?.updatePassword(to: newPasswordTF.text!) { (error) in
if let error = error as NSError? {
}
// Password change sucussfully
// ...
}
推荐阅读
- c# - 是否应该将同步 API 调用包装到异步中?
- r - 将 SpatialPointsDataFrame 写入形状文件会产生错误 rgdal::writeOGR : Non-unique field names
- java - 如何修复 org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“name”的 bean 时出错?
- javascript - 模态窗口检测不到我点击登录或注册按钮
- javascript - 如何从 get odata 调用方法中获取变量
- javascript - “ReferenceError:文档未定义”
- python - 基于另一个 Dask 数据帧创建子集 Dask 数据帧
- amazon-web-services - 通过 AWS SAM 模板禁用 API Gateway 中一个方法资源端点的安全性
- facebook - 为什么我在尝试共享页面时从 facebook 收到 406 代码?
- vue.js - 对数据库的去抖动 Vuex 操作调用不起作用