Googleログインのjavascriptファイルでfirebase node apiを使用しています。
firebase.initializeApp(config);
let provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider);
これは正常に機能し、ユーザーは自分のGoogle資格情報でログインできます。ユーザーがページに再度アクセスすると、ポップアップが再び開きますが、すでにログインしているため、ユーザーの操作を必要とせずにポップアップが閉じます。ポップアップを促す前に、すでにログインしているユーザーがいるかどうかを確認する方法はありますか?
https://firebase.google.com/docs/auth/web/manage-users
認証状態変更オブザーバーを追加する必要があります。
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});
currentUserがあるかどうかも確認できます
var user = firebase.auth().currentUser;
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
このシナリオでは、onAuthStateChanged()関数を使用する必要はありません。
次のコマンドを実行することにより、ユーザーがログインしているかどうかを簡単に検出できます。
var user = firebase.auth().currentUser;
「nullを返す」問題に直面している人にとっては、firebase呼び出しが完了するのを待っていないからです。
ページAでログインアクションを実行し、ページBを呼び出した場合、次のJSコードを呼び出して、予想される動作をテストできます。
var config = {
apiKey: "....",
authDomain: "...",
databaseURL: "...",
projectId: "..",
storageBucket: "..",
messagingSenderId: ".."
};
firebase.initializeApp(config);
$( document ).ready(function() {
console.log( "testing.." );
var user = firebase.auth().currentUser;
console.log(user);
});
ユーザーがログインしている場合、「var user」には予想されるJSONペイロードが含まれます。そうでない場合は、単に「null」になります
そして、それはあなたが必要とするすべてです。
よろしく