【发布时间】:2020-12-18 09:30:30
【问题描述】:
好的,所以我上网查看了,甚至阅读了 Google 提供的文档,但是,我似乎无法弄清楚我哪里出错了。
我想更改一个帐户的密码。 这是我现在的代码:
var credential: AuthCredential!
let user = Auth.auth().currentUser
VStack {
Text("Enter new password").font(.caption).foregroundColor(Color(SYSTEM_FONT_COLOUR))
PasswordTextField(password: $changeLoginDetailsViewModel.newPassword)
Spacer()
SignInButton(action: {
self.user?.reauthenticate(with: self.credential) { (result, error) in
if let error = error {
print(error.localizedDescription)
}
}
self.changeLoginDetailsViewModel.changePassword()
}, label: "Update Password")
}
每次我点击"Update password" 按钮时,应用程序都会崩溃。那是因为credential 为零。所以我做了研究,找到了方法EmailAuthProvider()。
所以我添加了这行代码:
let email = EmailAuthProvider.credential(withEmail: (Auth.auth().currentUser?.email!)!, password: "thisIsNotTheRealPassword")
出于道德原因和最佳实践,我不会将用户密码存储在我的数据库中。那么我什至如何获取/访问当前用户的密码呢?不保存?
我想我可以让用户输入他们当前的密码,这将允许重新验证,但是有没有一种方法可以在视图加载时做到这一点?所以他们不需要按两次更新密码按钮?并获得更好的 UI 体验。他们的用户已经登录,除非他们退出,否则不需要登录。
【问题讨论】:
标签: swift firebase firebase-authentication