JavaScriptクライアントからFirebase Authenticationを使用してテストを行っており、 クライアントのドキュメントでIDトークンを取得する でidTokenを取得しようとしています
基本的なことを忘れていると思います。
ユーザーはGoogleでログインしています
コードは他の投稿やドキュメントで見ただけです。そして結果はコメントにあります。
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
}
})
ありがとう
編集:
何か間違ったことを追加しても、何も起こりません。たとえば、アラートを追加すると、アラートが表示されますが、間違いがある場合、たとえば、alter()はエラーを表示しません。キャッチを追加し、何も追加しない
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
にはその時点でuser
がまだありません。 firebase.auth().onAuthStateChanged
のuser
を次のように直接使用する必要があります。
_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
});
}
});
_
firebase.auth().user
は、firebase.auth().onAuthStateChanged
が完了してスコープ外にある場合にのみ使用できます。それ以外の場合は、未定義になります。