swift - 如何获取凭据值以进行重新身份验证?(问题已更新)
问题描述
我正在尝试允许用户更改他们的电子邮件或密码。我对重新身份验证的工作方式进行了一些研究,但是在创建credential
如何在该.credentialWithEmail(email, password: password)
部分中获取用户电子邮件/密码时,我回答了大多数问题。我不确定在这些字段中输入什么。
当我查看快速帮助选项卡时,它解释了参数:
电子邮件 用户的电子邮件地址。密码 用户的密码。
这是代码
let credential = FIREmailPasswordAuthProvider.credentialWithEmail(email, password: password)
func updateEmail() {
guard let updatedEmail = self.updatedEmail else { return }
let user = Auth.auth().currentUser
guard let currentUid = Auth.auth().currentUser?.uid else { return }
// re authenticate the user
user?.reauthenticate(with: credential, completion: { (result, error) in
if let error = error {
// An error happened.
print(error._code)
self.handleError(error)
} else {
guard self.emailChanged == true else { return }
user?.updateEmail(to: self.emailTextField.text!, completion: { (error) in
if let error = error {
self.handleError(error)
} else {
print("Email Change Success")
USER_REF.child(currentUid).child("email").setValue(updatedEmail) { (err, ref) in
self.dismiss(animated: true, completion: nil)
}
}
}
)}
}
)}
解决方案
如果您问为什么设置后无法获取电子邮件或密码FIREmailPasswordAuthProvider
,那是因为它只是设置了。设置后没有找回邮箱/密码的功能FIREmailPasswordAuthProvider
。Firebase 没有办法从他们的Auth
班级中检索设置的密码。可以使用以下方式检索用户电子邮件let userEmail = Auth.auth().currentUser?.email
您可能需要重新设计您的代码,以允许应用在本地保存密码,NSUserDefaults
或者只是让用户重新输入密码。
推荐阅读
- netsuite - 使用 SuiteScript 创建供应商账单时如何设置库存详细信息?
- r - 如何从特定点开始删除观察结果?
- c# - 将文件上传到 FTP C# - StatusCode 150
- python - 如何使用 python 将包含大量数据的字典写入 csv 文件?
- amazon-web-services - AWS Lambda 使用在其他注册商处注册的域
- c++ - 由.app执行时QFile不起作用 - Macosx
- typescript - 使用必需和部分类型
- assembly - MIPS 如何计算大于 1.111 x2^1023 的数字?
- reactjs - Office UI Fabric TextField 焦点/光标问题
- oracle - SQL 块中的语句引发完整性约束,但不是作为单个语句