2017-02-06 10 views
1

login.htmlにFirebaseパスワードベースの認証を使用しています。私は2つのテキストボックスと3つのボタンがあります。Firebase OnAuthStateChanged関数が何も返さない

私はfirebase.OnAuthStateChangedを使用して、ユーザーがログインしているかログアウトしているかどうかを確認しています。ユーザーがログインしているときは、パスワードのテキストボックスとログインボタンは非表示にする必要があります。そのためにはdisplay : none;を使用します。ユーザーがログアウトすると、ログアウトボタンは非表示にする必要があります。


ボタンは完全に動作していますが、実際の問題はif elseifステートメントにあります。

以下は私のJavaScriptコードです。

P.S:Firebaseの設定をテストしても構いません。それとも、このログインを使用します。

最もfirebaseの通話と同様に
// Initialize Firebase 
    var config = { 
    apiKey: "AIzaSyDjYqNKbZaom0jplOusloWlr5mOhW2WbgQ", 
    authDomain: "awes-e3043.firebaseapp.com", 
    databaseURL: "https://awes-e3043.firebaseio.com", 
    storageBucket: "awes-e3043.appspot.com", 
    messagingSenderId: "191054424051" 
    }; 
    firebase.initializeApp(config); 
// SignIn 
$("button#in").click(function(){ 
var email = document.getElementById('logemail'); 
var password = document.getElementById('logpassword'); 
firebase.auth().signInWithEmailAndPassword(email.value, password.value).catch(function(error) { 
    console.log(error.code); 
    console.log(error.message); 
}).then(function(){ 
    location.reload(); 
}); 
}); 
// SignOut 
$("button#out").click(function(){ 
firebase.auth().signOut().then(function() { 
    console.log("Logged out!") 
    location.reload(); 
}, function(error) { 
    console.log(error.code); 
    console.log(error.message); 
}); 
}); 

    $(document).ready(function(){ 
function usigned(){ 
firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    return true; 
    } else { 
    return false; 
    } 
}); } 
if (usigned() == true) { 
    $("#hlogp").css("display", "none"); 
    $("button#in").css("display", "none"); 
    $("button#out").css("display", "inline-block") 
}else if(usigned() == false) { 
    $("button#out").css("display", "none"); 
    $("#hlogp").css("display", "block"); 
    $("button#in").css("display", "block"); 
} 
}); 

答えて

0

あなたが必要とするので、onAuthStateChanged()は、非同期的に実行コールバックを設定する:

function usigned(bool) { 
    if (bool) { 
    $("#hlogp").css("display", "none"); 
    $("button#in").css("display", "none"); 
    $("button#out").css("display", "inline-block"); 
    } else { 
    $("button#out").css("display", "none"); 
    $("#hlogp").css("display", "block"); 
    $("button#in").css("display", "block"); 
    } 
} 

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    usigned(true); 
    } else { 
    usigned(false); 
    } 
}); 

また、usigned()コードをインラインで入力するだけでも構いません。

+0

ありがとうございます。 –

関連する問題