我使用以下方法在 firebase 上創建了用戶:Firebase Admin SDK(在 python 中)。用戶出現在 firebase 控制臺中。
現在我正在嘗試在登錄頁面上使用 javascript 登錄用戶。但是,當我運行下面顯示的代碼時,它總是else以我的腳本中的回圈結束,我認為這表明用戶沒有登錄。
期望的行為是:用戶輸入電子郵件/密碼,提交表單,登錄,然后將它們重定向到索引頁面。相反,它什么也沒做。
<!doctype html>
<html lang="en">
<head>
<script src="https://www.gstatic.com/firebasejs/ui/4.5.1/firebase-ui-auth.js"></script>
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.5.1/firebase-ui-auth.css" />
</head>
<body>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-analytics.js"></script>
<script>
const firebaseConfig = {
//my stuff here
};
firebase.initializeApp(firebaseConfig);
firebase.analytics();
</script>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-auth.js"></script>
<div >
<h2>Sign In</h2>
<form id="loginform" action="" method="post">
<div >
<label for="email">Email</label> <input id="email" name="email" required="required" type="text" value="[email protected]">
</div>
<div >
<label for="password">Password</label> <input id="password" name="password" required="required" type="password" value="">
</div>
<div >
<input id="submit" name="submit" type="submit" value="Login">
</div>
</form>
<script>
document.getElementById('submit').addEventListener('click', loginUser);
function loginUser(){
let email = document.getElementById('email').value;
let password = document.getElementById('password').value;
firebase.auth().signInWithEmailAndPassword(email, password).catch(e=>{
alert(e)
});
};
firebase.auth().onAuthStateChanged(user=>{
if(user){
console.log(user)
user.getIdToken().then(function (token) {
//save the token in a cookie
document.cookie = "token=" token;
window.location.href = "/";
});
} else{
console.log("What up dude?");
}
});
</script>
</div>
</body>
</html>
*編輯:我已經在腳本中檢查了我的email和password變數是否正常作業。我還檢查了:
firebase.auth().signInWithEmailAndPassword(email, password).catch(e=>{
alert(e)});
一塊作業也很好,回報是我所期望的......所以問題必須在onAuthStateChanged()部分。
uj5u.com熱心網友回復:
您不應該添加window.location.href = "/";,onAuthStateChanged()因為這會在索引頁面中創建一個無限回圈的重新渲染。
相反,您應該在成功登錄后直接重定向到索引頁面
firebase.auth().signInWithEmailAndPassword(email, password).then(()=> {
window.location.href = "/";
}).catch(e=>{
alert(e)});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/409507.html
標籤:
