2017-09-13 16 views
0
githubLogin.addEventListener('click',() => { 
    var provider = new firebase.auth.GithubAuthProvider(); 

    firebase.auth().signInWithPopup(provider).then(function(result) { 
     var user = result.user; 
     console.log(user); 
     firebase.auth().onAuthStateChanged(function(user) { 
      if (user) { 
       window.location = "pages/welcome.html"; 
      }}); 
    }).catch(function(error) { 
     console.log(error); 
    }); 

}); 

問題は、ユーザーを歓迎するようにリダイレクトすると、そのページにログインしているユーザーがいないことがわかります。 私はonAuthStateChanged()関数を使用しなければならないことは知っていますが、これまでのところ間違っています。これがどうやってできるのか分かりますか?私はGoogleのログインに似た何かを持っている、それは機能に影響を与えるか?私はonAuthStateChanged関数を間違って呼び出しましたか?

答えて

0

ボタンを表示する前に認証状態を判断する必要があります。 onAuthStateChangedリスナーがnullユーザーで最初に起動すると、ログイン画面が表示されます。

また、signInWithPopupを呼び出すと、状態変更リスナーを追加する必要はありません。あなただけ行うことができます。

firebase.auth().signInWithPopup(provider).then(function(result) { 
    // User logged in, you can get currentUser from onAuthStateChanged 
    // listener on welcome page. 
    window.location.assign("pages/welcome.html"); 
}).catch(function(error) { 
    // Handle error. 
}); 
私はこのような何かをやった.....再び動作するようには思えませんでした
+0

... https://codepen.io/kol730/pen/QqWBZz –

+0

詳細をお知らせください。 – bojeil

+0

私はちょうど上記のリンクを追加しました –

関連する問題