【问题标题】:iOS Firebase reset password locally within app, not on redirect url pageiOS Firebase 在应用内本地重置密码,而不是在重定向 url 页面上
【发布时间】:2024-05-21 23:30:01
【问题描述】:

我正在编写代码以允许用户使用 Firebase 重置密码。目前,如果要求重置他们的密码,我使用 sendPassword 重置按钮如下:

    @IBAction func sendConfirmationEmail(_ sender: Any) {
        if let email = email {
            auth.sendPasswordReset(withEmail: email, completion: { error in
                if let error = error {
                    // Handle errors
                }
            })
        }

    }

这样就成功发送了验证邮件。然后我单击电子邮件中的链接,这会将我带到一个网页,我可以在其中输入新密码并单击提交。然后该页面告诉我可以使用新密码登录。但是,我想让用户在我的应用程序中输入他们的新密码。理想情况下,当用户单击链接时,他们将被重定向到我的应用程序,我可以转到正确的屏幕,然后他们可以在其中输入新密码,然后我可以调用 updatePassword firebase 函数。

如果这不可能,我至少希望用户在提交新密码后自动重定向到应用程序。我已经探索过使用 actionCodeSettings 进行此操作,但我不想编写自己的网页来输入新密码。

【问题讨论】:

标签: ios swift firebase redirect firebase-authentication


【解决方案1】:

现有 API 中无法更改您所描述的行为。

如果您想使用不同的 Firebase 密码重置流程,您必须自己实现。在这种情况下,您通常最终会使用 Admin SDK(在受信任的环境中)执行敏感操作,例如 changing the actual password

【讨论】:

    【解决方案2】:

    您可以使用ActionCodeSettings 将用户重定向到您的应用以完成密码重置。您必须将 handleCodeInApp 设置为 true,并且您必须配置 FDL 并拦截到应用程序的重定向。完成此操作后,您可以从深层链接获取代码,并要求用户使用新密码和深层链接中的代码confirmPasswordReset

    Learn more 了解如何处理来自您的应用的链接。

    但是,如果用户在未安装应用的其他设备上打开链接,您仍然需要编写 Web 后备。您可以显示一条错误消息,要求用户在同一设备上打开链接。它应该是最少的代码。

    【讨论】: