我有一个用Swift写的iOS应用程序。用户可以使用电子邮件和密码登录新的Firebase 3.2.1版本,也可以通过Facebook或Google登录。但是,我在重置用户密码时遇到了一个问题。Firebase提供了我正在使用的函数sendPasswordResetWithEmail,如下所示,用于发送带有链接的电子邮件,该链接允许用户重置其密码。
在我看来,当用户输入通过谷歌或脸书登录的电子邮件时,这个sendPasswordResetWithEmail函数应该会抛出一个错误,因为电子邮件中提供的链接不会重置谷歌或脸书的密码。但事实并非如此。
如果我为通过Google或Facebook登录的帐户提供电子邮件,则会找到该电子邮件,因为它确实存在于Firebase身份验证选项卡中的电子邮件列表中,尽管它将Google而不是Firebase显示为提供商。因此,它不会抛出ErrorCodeUserNotFound错误或任何其他错误。相反,Firebase仍在向提供的电子邮件发送重置密码电子邮件,它允许我重置密码并给我一条成功消息。然而,我当然不能用相同的帐户登录,除非我通过我的应用程序中提供的Facebook或Google登录按钮进行登录,在这种情况下,密码将保持旧密码。
我应该如何处理这种情况?
这是我在firebase.google.com站点上使用的代码:
FIRAuth.auth()?.sendPasswordResetWithEmail(email!) { error in
if error != nil {
// Display error message
if let errorCode = FIRAuthErrorCode(rawValue: error!.code) {
switch (errorCode) {
case .ErrorCodeUserNotFound:
self.displayAlertMessage(INVALID_EMAIL_3RDPARTY_ERROR_TITLE, message:"No account exists with this email address. Please try another email address.");
return
default:
self.displayAlertMessage(ACCOUNT_CREATION_DB_ERROR_TITLE, message: ACCOUNT_CREATION_DB_ERROR_MESSAGE);
return
}
}
} else {
// Password reset email sent.
}}注意:如果我使用的电子邮件地址没有在Firebase数据库的身份验证选项卡中列出,则会抛出ErrorCodeUserNotFound错误。
https://stackoverflow.com/questions/38277766
复制相似问题