如何确定用户已更改密码或未通过邮件更改密码。 我正在用电子邮件注册用户
mAuth.createUserWithEmailAndPassword(id, pass);
以及用户是否要求忘记密码 我通过以下方式发送忘记电子邮件地址:
mAuth.sendPasswordResetEmail(email);
但是我无法说出或弄清楚用户是否通过电子邮件进行了更改?
如何通过电子邮件确定密码是否已更改?
答案 0 :(得分:3)
如果要检测用户是否单击了密码重置电子邮件中的链接,请考虑设置自己的handler for the email actions。请查看文档以获取灵感,或者查看不提供自定义文档时使用的默认页面。
答案 1 :(得分:3)
几天前,当我也需要在数据库中保存用户密码时,也遇到了同样的情况。但是,当用户通过链接更改密码时,我很难获得用户的新更改密码。所以我是通过以下方式完成的
在成功进行Firebase身份验证后,通过App登录时会将用户的密码保存在SharedPreferences
中。因此,您的SharedPreferences中将始终具有最新的用户密码。现在,如果您要检查用户是否真的更改了密码,则可以检查将要保存在SharedPreferences
登录中的密码是否与以前的密码不同,这意味着密码已更改。>
答案 2 :(得分:1)
您可以将完整的侦听器附加到sendPasswordResetEmail()
,如果已经发送了电子邮件,则可以在该用户ID中的数据库中写入一个值,该值将告诉您密码已重置。
如果需要检查用户是否更改了密码,则可以在数据库中检查用户是否已更改。
例如,用于检查用户是否更改了密码的基本结构可能是
- UserID
|__ passwordReset
|_____ passwordResetPushID
|___ changed : TIMESTAMP
...
请记住,如果您通过登录流程进行操作,则在更改密码时FirebaseAuth getCurrentUser()
可能为null,但是如果在登录用户后在应用程序内进行操作,则不会有任何问题内。
对于第一种情况,您将需要一些解决方法,也许将最新登录的ID存储到sharedPrefs
中。
正如弗兰克的评论,您将需要一种在用户在浏览器中重置密码后触发的功能,该解决方案仅在触发sendPasswordResetEmail()
时通知您,而无需确认用户已完成密码更改,请按照弗兰克的回答进行操作。
答案 3 :(得分:0)
是的,弗兰克·范, 实际上,问题是我希望该特定设备ID的手机只能注册一个设备一个人一次
现在,我现在使用设备ID注册用户,我给用户提供了一个选项来更新他的邮件并将此邮件保存在数据库中,而不是现在每当用户单击“忘记密码”就立即更新我进入该设备ID并发送一个使用该电子邮件ID的验证邮件