ユーザーが自分のサイトにアクセスしたとき、私はonAuthStateChanged
を使用して、そのユーザーが以前のセッションから既にサインインしているかどうかを判断します。onAuthStateChanged inconsistent
主な問題は、少数のユーザーにとって矛盾していることです。コードは、有効なサインインされたセッションが続いていることを検出していないようです。
次のコードはアプリ自体に表示されています。ユーザーはホームページやログインページからリダイレクトした後にそのページに表示されます。
サイトのホームページもonAuthStateChanged
を使用して、ユーザーを直接アプリケーションにリダイレクトする必要があるかどうかを判断します。ログインページはsignInWithEmailAndPasswordを使用し、ログインが成功すると、それらをアプリケーションページ(次のコードを持つ)にリダイレクトします。
firebase.auth().onAuthStateChanged(function (authUser) {
if (authUser) return initApp(authUser);
// issue: sometimes users that *should* be signed-in get signed in anonymously here
firebase.auth().signInAnonymously().then(function (authUser) {
initApp(authUser);
}
});
onAuthStateChanged
私の使用例で使用しているはずのものではありませんか?これを改善/修正する方法は?
編集:これは、モバイルでユーザーがさらに増えることを示しています。
ログインページでリダイレクトする前にsignInWithEmailAndPasswordが解決するのを待ってください。アプリケーションページに早めにリダイレクトしている可能性があります。また、上のコードでは、匿名のサインイン後にonAuthStateChangedオブザーバが再度トリガーするため、initAppを匿名で2回呼び出します。 – bojeil
ありがとうございます。そうですね - コードが再び動くのですが、既にサインインしたユーザーを適切に処理するために 'initApp'関数に' userInitiated'変数があります。私は、以前のオンライン状態を復元するために時々リコールされるinitApp関数が必要です.Wifi接続が失われたり、Firebaseが再接続して再接続したためにユーザーがオフラインになったとしても、 –
はい、私は、signInWithEmailAndPasswordがリダイレクトの前に解決されたことを確認しています。 –