web-dev-qa-db-fra.com

Comment créer un objet "credential" requis par la méthode Firebase web user.reauthenticate ()?

L'exemple (peu clair) dans la nouvelle documentation :

var user = firebase.auth().currentUser;
var credential;
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential).then(function() {

Avec le client v3 Firebase, comment dois-je créer cet objet credential?

J'ai essayé: 

  • reauthenticate(email, password) (comme la méthode de connexion)
  • reauthenticate({ email, password }) (la documentation ne mentionne qu'un seul argument)

Pas de chance :(

PS: Je ne compte pas les heures perdues à chercher des informations pertinentes dans les nouveaux documents ... Je manque tellement les documents fabuleux de firebase.com, mais je voulais passer à la v3 pour firebase.storage ...

40
Pandaiolo

J'ai réussi à le faire fonctionner, les documents devraient être mis à jour pour inclure ceci pour ceux qui ne veulent pas passer trop de temps dans la référence exhaustive, mais difficile à lire.

L'objet d'identification est créé comme suit:

const user = firebase.auth().currentUser;
const credential = firebase.auth.EmailAuthProvider.credential(
    user.email, 
    userProvidedPassword
);
83
Pandaiolo

Réponse complète - vous pouvez effectuer les opérations suivantes:

var user = firebase.auth().currentUser;
var credentials = firebase.auth.EmailAuthProvider.credential(
  user.email,
  'yourpassword'
);
user.reauthenticateWithCredential(credentials);

Veuillez noter que reauthenticateWithCredential est la version mise à jour de reauthenticate()

17
maudulus
final FirebaseUser fireBaseUser = FirebaseAuth.getInstance().getCurrentUser();
AuthCredential credential = EmailAuthProvider.getCredential(fireBaseUser.getEmail(), storedPassword);
fireBaseUser.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() {
     @Override
     public void onComplete(@NonNull Task<Void> reAuthenticateTask) {
          if (!reAuthenticateTask.isSuccessful())
               ...
     }
});

Je conviens que la documentation n'est pas très claire à ce sujet. Mais en regardant un peu plus loin sur la référence de l’API j’ai trouvé firebase.auth.AuthCredential et this et je suppose que vous devriez chercher à le transmettre à reauthenticate().

Je devine ici mais je commencerais par essayer de consigner la firebase.auth() pour voir s’il existe un objet credential.

Je suppose que cela ressemblera à ceci:

user.reauthenticate(firebase.auth().credential).then(function() {
0
adolfosrs