如何使用 Firebase 实现忘记密码功能?

Posted

技术标签:

【中文标题】如何使用 Firebase 实现忘记密码功能?【英文标题】:How to implement Forgot your password feature Using Firebase? 【发布时间】:2018-11-11 06:14:27 【问题描述】:

我必须在我的应用中实现忘记密码模块,我已经为聊天和通知功能实现了 firebase 云消息传递。每次我登录我的应用程序时,我都会登录 firebase 以进行聊天和消息传递。

现在忘记密码了,我必须通过我的应用程序发送密码重置电子邮件来更改我的数据库中的密码,然后再次在 firebase 中更改 firebase 数据库中的密码。有没有办法在一封电子邮件或任何其他方式中实现这一点?

接受所有建议。

【问题讨论】:

建议:不要将密码存储在数据库本身 在我的数据库中还是在 firebase 数据库中?? 不幸的是,您在这里谈论的具体内容不是很清楚(数据库、firebase 实时数据库、firebase 身份验证)。因此,我只能给出一般性建议 用于firebase身份验证。当我登录我的应用程序时,我需要对 firebase 和我自己的数据库进行两次身份验证。因此,如果我在 firebase 数据库中更改密码,我也需要在我的数据库中更改密码。 你能澄清一下我的数据库是什么。为什么要让用户进行两次身份验证?为什么你有一个单独的数据库 - 只使用 Firebase 作为你的数据库怎么样? 【参考方案1】:

使用firebase默认方法为:

FirebaseAuth auth = FirebaseAuth.getInstance();

auth.sendPasswordResetEmail(emailAddress)
        .addOnCompleteListener(new OnCompleteListener<Void>() 
            @Override
            public void onComplete(@NonNull Task<Void> task) 
                if (task.isSuccessful()) 
                    // do something when mail was sent successfully.
                 else 
                    // ...
                
            
        );

这将向用户发送密码重置电子邮件。

【讨论】:

我有这个代码,这将发送firebase的重置密码并且只会更改firebase数据库中的密码那么我如何更改我的数据库中的密码?登录时我必须检查 firebase 和我的数据库。【参考方案2】:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.updatePassword(newPassword.getText().toString().trim())
            .addOnCompleteListener(new OnCompleteListener<Void>() 
        @Override
        public void onComplete(@NonNull Task<Void> task) 
            if (task.isSuccessful()) 
                Toast.makeText(MainActivity.this, "Password is updated!", Toast.LENGTH_SHORT).show();
             else 
                Toast.makeText(MainActivity.this, "Failed to update password!", Toast.LENGTH_SHORT).show();
                progressBar.setVisibility(View.GONE);
            
        
    );

发送电子邮件链接后,这是您需要的代码!

【讨论】:

以上是关于如何使用 Firebase 实现忘记密码功能?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase忘记密码 - 如何识别用户是否使用电子邮件或Facebook登录?

忘记密码:实现忘记密码功能的最佳方法是什么?

如何在 Node.js 中正确实现“忘记/重置密码”功能? (使用一次性令牌)

Django通用类视图实现忘记密码重置密码功能

忘记密码功能 Spring(密码检索)

Laravel 5.1 如何构建忘记密码功能