我正在使用谷歌新的firebase开发应用程序。 我在更新用户电子邮件和密码方面遇到了问题。
这是我尝试过的。
let currentUser = FIRAuth.auth()?.currentUser
currentUser?.updateEmail(email) { error in
if let error = error {
print(error)
} else {
// Email updated.
currentUser?.updatePassword(password) { error in
if let error = error {
} else {
// Password updated.
print("success")
}
}
}
}
但是当更新密码时,会发生这样的错误。
“Domain = FIRAuthErrorDomain Code = 17014”此操作非常敏感,需要最近的身份验证......“
据我所知,我们必须在更新电子邮件后重新配置用户。
我尝试使用此代码从firebase重新配置。
let user = FIRAuth.auth()?.currentUser
var credential: FIRAuthCredential
// Prompt the user to re-provide their sign-in credentials
user?.reauthenticateWithCredential(credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}
但这会发生错误
在初始化之前使用变量'凭证'
我知道这是因为我没有初始化'凭证'变量,但我不知道如何解决这个问题。
有谁知道解决方案?
答案 0 :(得分:9)
在您的编辑中,您没有初始化FIRAuthCredential
...它应该是var credential = FIRAuthCredential()
或者只是像下面的代码一样使用它
let credential = FIREmailPasswordAuthProvider.credentialWithEmail(email, password: password)
user?.reauthenticateWithCredential(credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}