Para Firebase Simple Login, tengo que iniciar sesión dos veces para que se registre
-
26-12-2019 - |
Pregunta
Estoy bastante seguro de que este es un problema de mí, no entendiendo completamente a JavaScript asíncrono, pero explicaré mi problema.
Tengo un correo electrónico / contraseña autenticado con FireBase, y tengo una página de inicio de sesión con el siguiente formulario:
<form class="form-signin" role="form" action="#" onsubmit="return login(this);">
<h2 class="form-signin-heading">Please log in</h2>
<input type="email" id="email" class="form-control" placeholder="Email address" required autofocus>
<input type="password" id="password" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Log in</button>
</form>
Cuando hago clic en el botón, obtengo el siguiente error en My JS Console que parpadea realmente rápidamente:
Sin captura TypeError: No se puede leer la propiedad 'token' de indefinido --- Firebase-Simple-Login.js: 132
En la parte inferior de mi etiqueta principal, incluyo el script "JS / Firebase.js" y este es ese archivo:
var myRef = new Firebase("https://xxxx.firebaseio.com");
var auth = new FirebaseSimpleLogin(myRef, function(error, user) {
if (error) {
console.log(error);
} else if (user) {
console.log("User ID: " + user.uid + ", Provider: " + user.provider);
} else {
}
});
function login(form)
{
auth.login('password', {
email: form.email.value,
password: form.password.value
});
}
Después de completar el formulario, presione el botón y obtenga el error, los campos se ponen en blanco y hay un "? #" agregado al final de mi URL.Si intento iniciar sesión después de esto funciona perfectamente.¡Gracias de antemano!
Solución
La primera vez que carga esta página y haga clic en "Iniciar sesión", su formulario se está enviando y la página está recaudando, evitando que se inicie sesión simple de completar con éxito.Consulte Cómo evitar que los botones envíen formularios .