首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理使用Google或Facebook登录的帐户通过电子邮件重置Firebase密码

如何处理使用Google或Facebook登录的帐户通过电子邮件重置Firebase密码
EN

Stack Overflow用户
提问于 2016-07-09 10:43:34
回答 0查看 1.8K关注 0票数 2

我有一个用Swift写的iOS应用程序。用户可以使用电子邮件和密码登录新的Firebase 3.2.1版本,也可以通过Facebook或Google登录。但是,我在重置用户密码时遇到了一个问题。Firebase提供了我正在使用的函数sendPasswordResetWithEmail,如下所示,用于发送带有链接的电子邮件,该链接允许用户重置其密码。

在我看来,当用户输入通过谷歌或脸书登录的电子邮件时,这个sendPasswordResetWithEmail函数应该会抛出一个错误,因为电子邮件中提供的链接不会重置谷歌或脸书的密码。但事实并非如此。

如果我为通过Google或Facebook登录的帐户提供电子邮件,则会找到该电子邮件,因为它确实存在于Firebase身份验证选项卡中的电子邮件列表中,尽管它将Google而不是Firebase显示为提供商。因此,它不会抛出ErrorCodeUserNotFound错误或任何其他错误。相反,Firebase仍在向提供的电子邮件发送重置密码电子邮件,它允许我重置密码并给我一条成功消息。然而,我当然不能用相同的帐户登录,除非我通过我的应用程序中提供的Facebook或Google登录按钮进行登录,在这种情况下,密码将保持旧密码。

我应该如何处理这种情况?

这是我在firebase.google.com站点上使用的代码:

代码语言:javascript
复制
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错误。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38277766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档