2016-07-24 5 views
1

私は現在、ユーザーが自分のGoogleアカウントでログインしてアプリにアクセスするようにFirebaseを使用しています。ただし、ページを閉じる/新しいタブでページを開くには、ユーザーが再度サインインする必要があります。ユーザーが再ログインするのを防ぐ方法はありますか?ここでGoogleログインでFirebaseのログインを維持しますか?

は、私は(firebaseドキュメントからの例)を使用していますログインコードである

function firebaseLogin() { 
    firebase.auth().signInWithPopup(provider).then(function(result) { 
    var token = result.credential.accessToken; 
    var user = result.user; 
    document.getElementById('user-name').innerHTML = user.displayName; 
    document.getElementById('propic').src = user.photoURL; 
    addClass(login, 'hidden'); 
    removeClass(logout, 'hidden'); 
    var snackbarData = { 
     message: 'Login Successful', 
     timeout: 2000 
    }; 
    snackbarContainer.MaterialSnackbar.showSnackbar(snackbarData); 
    console.log(user); 
    reloadList(); 
    }).catch(function(error) { 
    var errorCode = error.code; 
    var errorMessage = error.message; 
    var email = error.email; 
    var credential = error.credential; 
    var snackbarData = { 
     message: 'Login Unsuccessful', 
     timeout: 2000 
    }; 
    snackbarContainer.MaterialSnackbar.showSnackbar(snackbarData); 
    console.error(error); 
    }); 
} 
+0

[最小限のコードを再現する問題](http://stackoverflow.com/help/mcve)、それはあなたのアプリがそれがやっているように動作している理由を言うことは不可能です。 –

+0

使用している環境を指定してください。また、現在の認証状態を確認するために認証状態オブザーバを使用していることを確認してください。ロード時にfirebase.auth()。currentUserを同期してチェックすると、現在ログインしているユーザは返されません(状態判定は非同期操作です)。いくつかの開発者はこの間違いを犯します。 – bojeil

+0

ああ、意味があります。私はこのプロジェクトに戻ったときに、正式なオブザーバーを使うことに切り替えます。環境に関しては、これはWebプロジェクトで、ブラウザ(クライアント側)にjavascriptだけを使用しています。 – ROODAY

答えて

0

私は、これはそれを行うには公式の方法であるかどうかわからないんだけど、私が返され、ユーザーを保存することになりましたlocalStorageのfirebase.auth().currentUserから取得し、ドキュメントのロード時にユーザーがlocalStorageに見つかったかどうかを確認します。ユーザーが見つかった場合は、firebase.auth()。currentUserをlocalStorageのユーザーと等しく設定し、すべてが意図したとおりに動作しているように見えます。たとえば、認証されたユーザーがいない場合、クライアントはデータベースを呼び出すことができませんが、currentUserをこのように設定するとデータベースにアクセスできます。

+0

私は同様のアプローチを使用しましたが、「エラー: "currentUser"は読み取り専用です " – kyleED

+0

うーん、私はそれにぶつかりませんでした。 3rd、Firebaseに変更があったのでしょうか? – ROODAY

関連する問題