How to change password using Firebase in Flutter

前端 未结 4 1872
一向
一向 2021-01-24 06:46

I want to change current user password using Firebase in Flutter. Can any one help me on how to implement change password method?

相关标签:
4条回答
  • 2021-01-24 06:57

    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

    0 讨论(0)
  • 2021-01-24 06:59

    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.
        });
      }
    
    0 讨论(0)
  • 2021-01-24 07:13

    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){})

    0 讨论(0)
  • 2021-01-24 07:20

    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.

    0 讨论(0)
提交回复
热议问题