I want to change current user password using Firebase in Flutter. Can any one help me on how to implement change password method?
As @Gunter mentioned that the feature is currently still unavailable, you can make use of the firebase REST API way of changing the password for the time being.
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'dart:async';
Future<Null> changePassword(String newPassword) async {
const String API_KEY = 'YOUR_API_KEY';
final String changePasswordUrl =
'https://www.googleapis.com/identitytoolkit/v3/relyingparty/setAccountInfo?key=$API_KEY';
final String idToken = await user.getIdToken(); // where user is FirebaseUser user
final Map<String, dynamic> payload = {
'email': idToken,
'password': newPassword,
'returnSecureToken': true
};
await http.post(changePasswordUrl,
body: json.encode(payload),
headers: {'Content-Type': 'application/json'},
)
}
You can get the idToken
by using the getIdToken() method on the FirebaseUser object
You can get the firebase api key under the project setting in your console
I know this is a late post, but now it's possible to change the password of the logged-in user. Make sure to notify the user to log in again since this is a sensitive operation.
void _changePassword(String password) async{
//Create an instance of the current user.
FirebaseUser user = await FirebaseAuth.instance.currentUser();
//Pass in the password to updatePassword.
user.updatePassword(password).then((_){
print("Successfully changed password");
}).catchError((error){
print("Password can't be changed" + error.toString());
//This might happen, when the wrong password is in, the user isn't found, or if the user hasn't logged in recently.
});
}
This should work according to the latest version of firebase:
final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
User currentUser = firebaseAuth.currentUser;
currentUser.updatePassword("newpassword").then((){}).catchError((err){})
This is currently not supported.
When this pull request is merged https://github.com/flutter/plugins/pull/678 the Flutter firebase_auth package will support that.