web-dev-qa-db-fra.com

Firebase getIdToken ne fonctionne pas

Je fais des tests avec Firebase Authentication à partir du client javascript et j'essaie de récupérer l'idToken avec récupérer les jetons id sur la documentation des clients

Je pense que j'oublie quelque chose de basique.

Un utilisateur est connecté avec Google

Le code est juste que j'ai vu dans d'autres articles et dans la documentation. Et le résultat est dans les commentaires.

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
     console.log(user); // this is shown. Firebase user and provider data
     console.log(user.uid); // Shown
        firebase.auth().user.getIdToken().then(function(idToken) {
           console.log(idToken+'--'); // Nothing happens. No errors and the function not continues
        });
     console.log(user.uid); // Nothing happens
  }
})

Merci

MODIFIER:

si j'ajoute quelque chose de mal, rien ne se passe aussi. par exemple, si j'ajoute une alerte, il affiche l'alerte, mais si j'ai une erreur, par exemple alter () n'affiche aucune erreur. Prise supplémentaire et rien de trop

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
     alter() // Nothing happens and the function stop         
     console.log(user); // this is shown. Firebase user and provider data
     console.log(user.uid); // Shown
        firebase.auth().user.getIdToken().then(function(idToken) {
           console.log(idToken+'--'); // Nothing happens. No errors and the function not continues
        }).catch(function(error) {
            console.log(error+'--'); // Nothing
        });
     console.log(user.uid); // Nothing happens
  }
})
6
Luis Gar

firebase.auth().user n'a pas encore le user en ce moment. Vous devez utiliser le user de firebase.auth().onAuthStateChanged directement comme ceci:

firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
        console.log(user); // It shows the Firebase user
        console.log(firebase.auth().user); // It is still undefined
        user.getIdToken().then(function(idToken) {  // <------ Check this line
           console.log(idToken); // It shows the Firebase token now
        });
    }
});

Vous ne pouvez utiliser firebase.auth().user qu'après que firebase.auth().onAuthStateChanged est terminé et hors de sa portée, sinon il ne sera pas défini.

10
user6327949