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