Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change password with Firebase for Android

I want to implement change password functionality for my application.

I included com.google.firebase:firebase-auth:9.0.2 in my build.gradle file and so far everything has been working fine until I tried to implement change password functionality.

I found that the FirebaseUser object has a updatePassword method that takes a new password as the parameter. I could use this method and implement validation myself. However, I need the user's current password for comparing with the inputted one and I can't find a way to get that password.

I also found another method on the Firebase object that takes the old password, new password, and a handler. The problem is that I need to also include com.firebase:firebase-client-android:2.5.2+ to access this class and when I am trying this method I'm getting to following error:

Projects created at console.firebase.google.com must use the new Firebase Authentication SDKs available from firebase.google.com/docs/auth/

Feel like I'm missing something here. What's the recommended approach for implementing this? And when to use what dependency?

like image 256
nilsi Avatar asked Oct 05 '16 05:10

nilsi


People also ask

How do I change my Firebase authentication password on Android?

One way to allow your users to change their password is to show a dialog where they enter their current password and the new password they'd like. You then sign in (or re-authenticate) the user with the current passwordand call updatePassword() to update it.

How do I reset my Firebase password?

To send a password reset email to user, on the Users page, hover over the user and click ... > Reset password. The user will receive an email with instructions on how to reset their password.


1 Answers

I found a handy example of this in the Firebase docs:

Some security-sensitive actions—such as deleting an account, setting a primary email address, and changing a password—require that the user has recently signed in. If you perform one of these actions, and the user signed in too long ago, the action fails and throws FirebaseAuthRecentLoginRequiredException. When this happens, re-authenticate the user by getting new sign-in credentials from the user and passing the credentials to reauthenticate. For example:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();  // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. AuthCredential credential = EmailAuthProvider         .getCredential("[email protected]", "password1234");  // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential)         .addOnCompleteListener(new OnCompleteListener<Void>() {             @Override             public void onComplete(@NonNull Task<Void> task) {                 if (task.isSuccessful()) {                     user.updatePassword(newPass).addOnCompleteListener(new OnCompleteListener<Void>() {                         @Override                         public void onComplete(@NonNull Task<Void> task) {                             if (task.isSuccessful()) {                                 Log.d(TAG, "Password updated");                             } else {                                 Log.d(TAG, "Error password not updated")                             }                         }                     });                 } else {                     Log.d(TAG, "Error auth failed")                 }             }         }); 
like image 149
nilsi Avatar answered Sep 16 '22 23:09

nilsi