首页 > 解决方案 > FirebaseAuth - 让用户使用任何提供者更改密码 - Android

问题描述

我有一个社交媒体应用程序,我FirebaseUI用来让用户使用电子邮件、谷歌或 Facebook 登录/注册该应用程序。

  1. 如果使用“电子邮件”作为提供商,我如何让用户稍后更改他/她的密码?

  2. 如果使用 Facebook 或 Google 作为提供者,我可以通过给他/她更改密码的选项让他/她将电子邮件密码设置为身份验证方法吗?

  3. 来自用户的更改密码操作应在 firebase 中将电子邮件密码设置为身份验证方法,并使用用户输入的新密码。

  4. 然后,用户应该能够使用电子邮件密码或与同一电子邮件链接的身份验证提供商(Facebook/Google)登录。

标签: androidfirebasefirebase-authentication

解决方案


回答你的问题:

  1. 的。

这是用于更改/更新用户密码的示例代码片段:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String newPassword = "SOME-SECURE-PASSWORD";

user.updatePassword(newPassword)
    .addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "User password updated.");
            }
        }
    });

此处提供了使用 Firebase 用户的详细信息。

2.一个。 在您的应用程序中更改密码

Facebook、Google 和 Twitter 等登录提供商不开放此功能 (API) 以防止中间人和其他攻击/滥用。

湾。用户登录后在服务商中修改密码

用户仍然可以登录您的应用程序,身份验证过程直接与服务提供商交易,因此您不必担心!

C。使用相同的电子邮件地址进行多次身份验证。

参考

假设用户 A 使用 Facebook 登录到我的应用程序,然后他在 MY APP 中转到他的个人资料,并更改了他的密码,下次登录我希望他有 2 个选项: 1- 使用 Facebook 正常登录 2- 使用他的登录facebook Email + 他之前保存的密码

答案是肯定的,但是你必须先合并细节,这里是参考。您实际上可以通过识别相同的 Firebase 用户 ID 来链接/合并同一电子邮件地址的用户详细信息,而不管他们用于登录的身份验证提供商如何。

例如,使用密码登录的用户可以关联一个 Google 帐户,并在以后使用任一方法登录。或者,匿名用户可以链接 Facebook 帐户,然后再登录 Facebook 以继续使用您的应用程序。

希望能帮助到你!


推荐阅读