web-dev-qa-db-ja.com

Firebase getIdTokenが機能しない

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
  }
})
6
Luis Gar

firebase.auth().userにはその時点でuserがまだありません。 firebase.auth().onAuthStateChangeduserを次のように直接使用する必要があります。

_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が完了してスコープ外にある場合にのみ使用できます。それ以外の場合は、未定義になります。

10
user6327949