Pergunta

Tenho certeza de que isso é um problema porque eu não entendo totalmente o javascript assíncrono, mas vou explicar meu problema.

Tenho um e-mail/senha autenticado no Firebase e tenho uma página de login com o seguinte formulário:

<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>

Quando clico no botão, recebo o seguinte erro no meu console JS que pisca muito rapidamente:

Erro de tipo não detectado:Não é possível ler a propriedade 'token' de indefinido --- firebase-simple-login.js:132

Na parte inferior da minha tag head incluo o script "js/firebase.js" e este é esse arquivo:

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
    });
}

Depois de preencher o formulário, pressiono o botão e recebo o erro, os campos ficam em branco e há um "?#" anexado ao final da minha URL.Se eu tentar fazer login depois disso, funcionará perfeitamente.Desde já, obrigado!


Foi útil?

Solução

Na primeira vez que você carrega esta página e clica em “login”, seu formulário é enviado e a página é recarregada, impedindo que o login simples seja concluído com êxito.Ver Como evitar que botões enviem formulários.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top