10

Firebaseで見ている動作によってちょっと混乱します。私は古いバージョンを使用したことはありませんが、getRedirectResultはGoogleと協力して新しくなったと思います。ログアウト後にFirebase getRedirectResultが呼び出されています

私はvue-routerでVue.jsを使用しているSPAを、FirebaseにはFirebaseを使用しています。ランディングページがあり、ユーザーがログインできるかどうかは別のビューです。ログインはリダイレクトによって行われます。この2番目のビューがロードされると、私はvue-router 'activate'フックでgetRedirectResultをチェックし、ユーザがいる場合は、ユーザ情報で他のものを行います。

問題は次のように進みます。
1. 2ページ目です。ユーザーがログインすると、getRedirectResultが呼び出され、ユーザーが検出されます。わーい。
2.ユーザーがログアウトします。リンク先ページに戻ります。
3. 2番目のページにつながるボタンをクリックします。 getRedirectResultが呼び出され、前のユーザーが検出されます。何?!いいえ!

何か不足しているかどうか、何らかの余分なチェックが必要かどうか、ログアウト後に何らかの形で強制的にページを更新する必要があるかどうかはわかりません。最後にログインしたことを忘れてしまいます。バグを考慮した。どんな支援も大歓迎です! VUEコンポーネントルータで

2ページ目getRedirectResultコールフック 'アクティブ':更新

 
    firebase.auth().getRedirectResult() 
     .then((result) => { 
      return result.user; 
     }).then((user) => { 
      // Do stuff. 
     }); 

を次のようには、ログアウトコールバックでハードページの更新を行うことによって解決:

 
    firebase.auth().signOut() 
     .then(() => {window.location.href = '/'}); 

+0

こんにちは、あなたはハードリフレッシュ以外のこの問題への解決策を見つけたことがありますか? – user482594

+0

@ user482594 nope;私はその修正を見つけたらそれに取り組むことを止めました。 – hboo

+0

これについてGoogleのFirebaseサポートチームに連絡しました(ケース:0-7351000018196)、これは予想された動作だと言いました。彼らによると、最初にFacebookでサインインしたアプリからユーザーをログアウトさせるには、アプリはFacebook SDKを使用してそれを行う必要があります。それは火の底ではない! – user482594

答えて

0

getRedirectResult()が処理されたかどうかを検出するフラグを使用します。すなわち

firebase.auth().getRedirectResult() 
    .then((result) => { 
    return result.user; 
    }).then((user) => { 
    if (this.authRedirected) 
     return; // Skip 

    // Do stuff. 

    this.authRedirected = true; // Mark redirected 
    }); 
関連する問題