2017-12-31 68 views
2

Ich arbeite an meiner firebase-Anwendung und ich brauche etwas Hilfe mit der Logik, weil es derzeit nicht wie vorgesehen funktioniert.Firebase ändern "DisplayName" nur, wenn das Passwort korrekt ist

Ich versuche es so zu machen, dass ein eingeloggter Benutzer seinen Namen nur ändern kann, wenn er das richtige Passwort eingibt.

Mit meinem aktuellen Code ändert es den Namen trotz der Toast-Nachricht, dass das eingegebene Passwort nicht korrekt war.

/** 
    * Update Name Only 
    */ 
    private void updateDisplayNameOnly(){ 

     showProgress(); 

     AuthCredential credential = EmailAuthProvider 
       .getCredential(FirebaseAuth.getInstance().getCurrentUser().getEmail(), mConfirm.getText().toString()); 

     FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential) 
       .addOnCompleteListener(new OnCompleteListener<Void>() 
       { 
        @Override 
        public void onComplete(@NonNull Task<Void> task) 
        { 
         FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

         UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder() 
           .setDisplayName(mName.getText().toString()) 
           //.setPhotoUri(Uri.parse("https://avatarfiles.alphacoders.com/862/86285.jpg")) 
           .build(); 

         user.updateProfile(profileUpdate); 

         if (task.isSuccessful()) 
         { 
          Log.d(TAG, "onComplete: User Profile updated"); 
          hideProgress(); 

          Toast.makeText(getActivity(), "NAME IS UPDATED XD XD XD", Toast.LENGTH_SHORT).show(); 

          // RESTART APP FOR CHANGES 
         } 

        } 
       }) 
       .addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception e) { 
         hideProgress(); 
         Toast.makeText(getActivity(), "NAME WAS NOT UPDATED 2", Toast.LENGTH_SHORT).show(); 
        } 
       }); 

    } 

Bitte helfen Sie mir mit diesem

Antwort

0

Sie sind Ausgabe könnte, dass Sie Task<Void>-Task<AuthResult> setzen in Ihrer Methode. Versuchen Sie, Ihren Code wie folgt zu ändern:

@Override 
    public void onComplete(@NonNull Task<AuthResult> task) { 
     if(task.isSuccessful()) 
     { 
      FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

      UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder() 
        .setDisplayName(mName.getText().toString()) 
        //.setPhotoUri(Uri.parse("https://avatarfiles.alphacoders.com/862/86285.jpg")) 
        .build(); 

      user.updateProfile(profileUpdate); 

      Log.d(TAG, "onComplete: User Profile updated"); 
      Toast.makeText(getActivity(), "NAME IS UPDATED XD XD XD", Toast.LENGTH_SHORT).show(); 

     } 
     } else { 
      //Display what happens if you couldn't update the name 
     } 
     hideProgressDialog(); 
    }); 
Verwandte Themen