我想为我的应用程序实现更改密码功能。
我在我的build.gradle
文件中包含了com.google.firebase:firebase-auth:9.0.2
,到目前为止,一切都工作正常,直到我尝试实现更改密码功能。
我发现FirebaseUser
对象中有一个updatePassword
方法,该方法以新密码为参数。我可以使用该方法,自己实现验证。但是,我需要用户的当前密码与输入的密码进行比较,我无法找到获取该密码的方法。
我还在Firebase
对象上发现了另一个方法,它接受旧密码、新密码和一个句柄。问题是我还需要包含com.firebase:firebase-client-android:2.5.2+
来访问该类,当我尝试使用这个方法时,我得到了以下错误:
在www.example.com上创建的项目console.firebase.google.com必须使用www.example.com上提供的新Firebase身份验证SDKfirebase.google.com/docs/auth/
我觉得我在这里遗漏了一些东西。推荐的实现方法是什么?什么时候使用什么依赖关系?
7条答案
按热度按时间shyt4zoc1#
我在Firebase文档中找到了一个方便的例子:
某些安全敏感操作(如删除帐户、设置主电子邮件地址和更改密码)要求用户最近登录过。如果您执行这些操作之一,而用户在很久以前登录过,则操作将失败并引发FirebaseAuthRecentLoginRequiredException。发生这种情况时,通过从用户处获取新的登录凭据并传递凭据以重新进行身份验证,重新对用户进行身份验证。例如:
new9mtju2#
在firebase中更改密码有点棘手。它不像我们通常在服务器端脚本和数据库中更改密码所做的那样。要在您的应用中实现更改密码功能,首先,您需要从FirebaseAuth获取用户的电子邮件或提示用户输入电子邮件,然后提示用户输入旧密码,因为您无法检索用户的密码,如Frank货车Puffelen所述。之后,你需要重新验证。一旦重新验证完成,如果成功,你可以使用
updatePassword()
。我已经添加了一个样本,我自己的应用程序使用下面。希望,它会帮助你。b5buobof3#
无法从Firebase身份验证中检索用户的当前密码。
允许您的用户更改密码的一种方法是显示一个对话框,用户可以在其中输入当前密码和所需的新密码。然后您使用当前密码登录(或重新验证)用户,并调用
updatePassword()
更新密码。b4qexyjb4#
我在谷歌上搜索了一些关于重置Firebase密码的内容,然后找到了这个页面。它很有帮助,但并没有让我一路走到终点:我还是得在谷歌上搜索五到十分钟,所以我回来为VueJS用户改进答案。
我看到这里有很多代码使用“FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();这是最流行的两个答案中提到的谜题的一部分。
但是我无法在我的项目中使用它,我的项目是用VueJS编写的,所以我不得不去探索。
我找到的是Firebase文档的another page,它和人们得到引用代码的页面是一样的(我想),但是用的是为Web编写的文档,而不是Android/Java。
所以,如果你在这里使用VueJS,请查看第一个链接。我认为它会很有帮助。“获取当前登录用户”可能包含适合你的项目的代码。我在那里找到的代码是:
我在上面链接的那个页面(“另一个页面”)最终把我带到了Web文档的“设置用户密码”部分。这里的海报正确地说明了用户必须在最近通过身份验证才能启动密码更新。尝试这个链接以获得更多关于重新验证用户的信息。
“设置用户密码”:
“重新验证使用者”
woobm2wo5#
查询用户忘记密码或希望通过电子邮件重置密码,可通过
Auth.sendPasswordResetEmail("email@gmail.com");
实现通过初始化开始
第一个
在其他地方,当用户请求更新或重置其密码时,只需访问mAuth,
现在,Firebase mAuth将为您处理该问题,您无需在数据库中查询电子邮件是否存在。
电子邮件是否已通过验证?它是否在您的验证列表中处于活动状态?然后发送密码重置电子邮件。
内容如下所示
重置链接将在新网页上提示以下对话框
额外
如果你对Firebase“设计”的重置模板有点紧张,你可以从Firebase控制台轻松访问和定制你自己的信件。
zvokhttg6#
处理密码更改的一种简单方法是向用户发送密码重置电子邮件。
njthzxwz7#
这是一个Kotlin解决方案,我把方法放在这里,希望能有所帮助