【发布时间】:2016-10-02 20:31:50
【问题描述】:
我正在尝试为用户构建一个使用电子邮件身份验证的网站。但是,每次我尝试注册或登录用户时,firebase.auth().onAuthStateChanged 函数都会触发,但无法识别用户已登录或注册。这是我当前的代码。我知道它有效,因为它会提醒我,“没有用户!”每次登录或注册后,因为我可以进入我的 Firebase 控制台并查看用户已注册。如果有人知道如何解决这个问题,我将不胜感激!
谢谢!
代码:
function initApp() {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
alert("Signed in user!")
} else {
alert("No user!")
}
});
}
window.onload = function() {
initApp();
};
登录和注册代码:
function toggleSignIn() {
if (firebase.auth().currentUser) {
alert("Sign out")
firebase.auth().signOut();
// [END signout]
} else {
var email = document.getElementById('email').value;
var password = document.getElementById('pass').value;
if (email.length < 4) {
alert('Please enter an email address.');
return;
}
if (password.length < 4) {
alert('Please enter a password.');
return;
}
// Sign in with email and pass.
// [START authwithemail]
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// [START_EXCLUDE]
if (errorCode === 'auth/wrong-password') {
alert('Wrong password.');
} else {
console.error(error);
}
// [END_EXCLUDE]
});
// [END authwithemail]
}
}
function handleSignUp() {
var email = document.getElementById('semail').value;
var password = document.getElementById('spass').value;
if (password.length < 6) {
alert('Password must be 6 characters or more!');
return;
}
// Sign in with email and pass.
// [START createwithemail]
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// [START_EXCLUDE]
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
console.error(error);
}
// [END_EXCLUDE]
});
// [END createwithemail]
}
【问题讨论】:
-
你能放更多你的代码吗...???了解登录和登录的方式和时间
-
我已将其添加到原始问题中。这两个函数都是通过点击按钮触发的。
-
看来这是一个普遍的问题,目前还没有答案... :/ stackoverflow.com/questions/37504466/…
-
我已经正确使用了这两种方法,但是使用了 react 和 angular...我将检查它们在纯 javascript 中的行为
-
是的,您需要在 firebase 控制台中转到您的项目,并在 authentication menu->sign-in-method 中将域添加到授权域,默认情况下 localhost 已授权,或者您可以添加您的如果您在本地测试,则为本地 IP
标签: javascript html authentication web firebase