FirebaseAuth-让用户使用任何提供程序更改密码-Android

时间:2018-08-07 11:28:49

标签: android firebase firebase-authentication

我有一个社交媒体应用程序,我正在使用FirebaseUI允许用户使用电子邮件,Google或Facebook登录/注册该应用程序。

  1. 如果使用“电子邮件”作为密码,如何让用户以后更改其密码? 提供者?

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

  3. 用户执行的更改密码操作应使用用户输入的新密码在Firebase中将“电子邮件密码”设置为“身份验证方法”。

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

1 个答案:

答案 0 :(得分:3)

回答您的问题:

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

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用户的详细信息,请参见here

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

诸如Facebook,Google和Twitter之类的登录提供程序不会打开此功能(API),以防止中间人和其他攻击/滥用。

b。用户登录后在服务提供商中更改了密码

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

c。使用同一电子邮件地址进行多次身份验证。

引用

  

假设用户A使用Facebook登录到我的应用程序,然后他进入了我的APP中的个人资料,并更改了密码,下次登录时,我希望他有2个选择:1-通常使用Facebook登录2-使用他的facebook电子邮件和他之前保存的密码登录

答案是,但是您必须首先合并详细信息,这里是reference。您实际上可以通过标识相同的Firebase用户ID来链接/合并同一电子邮件地址的用户详细信息,而不用考虑他们用来登录的身份验证提供程序。

例如,使用密码登录的用户将来可以链接Google帐户并使用这两种方法登录。或者,匿名用户可以链接Facebook帐户,然后再登录Facebook以继续使用您的应用。

希望有帮助!