#javascript #firebase #firebase-authentication
#javascript #firebase #firebase-аутентификация
Вопрос:
В настоящее время я работаю над веб-сайтом, на котором есть панель администратора, но я не могу войти в систему. Конфигурация Firebase копируется с веб-сайта, и аутентификация активируется с помощью электронной почты и пароля. Вот мой код:
<script src="https://www.gstatic.com/firebasejs/8.0.1/firebase-auth.js"></script>
<script>
// CONFIG FIREBASE
const firebaseConfig = {
// Firebase config is copied from the Firebase project
};
firebase.initializeApp(firebaseConfig);
// WORK ON USER
const myButton = document.getElementById('signing');
const emailField = document.getElementById('inputEmail');
const passwordField = document.getElementById('inputPassword');
myButton.addEventListener(`click`, function() {
const email = emailField.value;
const password = passwordField.value;
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
const errorCode = error.code;
const errorMessage = error.message;
alert('Error : ' errorCode ' - ' errorMessage);
});
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
const displayName = user.displayName;
const emailU = user.email;
alert('Hello ' displayName '!');
alert('Your mail is ' emailU);
} else {
alert('Not logged !');
}
});
});
</script>`
Код соответствующей формы:
<form class="form-signin">
<img
class="mb-4"
src="assets/images/logo.png"
alt=""
width="72"
height="72"
/>
<h1 class="h3 mb-3 font-weight-normal">Se connecter</h1>
<label for="inputEmail" class="sr-only">Email address</label>
<input
type="email"
id="inputEmail"
class="form-control"
placeholder="Email"
required
autofocus
/>
<label for="inputPassword" class="sr-only">Password</label>
<input
type="password"
id="inputPassword"
class="form-control"
placeholder="Mot de passe"
required
/>
<button
id="signing"
class="btn btn-lg btn-primary btn-block"
type="submit"
>
Se connecter
</button>
<p class="mt-5 mb-3 text-muted">Les papilles de Lydie</p>
</form>
Комментарии:
1. Можете ли вы также показать код формы, соответствующий MyButton и полям. Кроме того, вы получаете какую-либо ошибку (
alert('Error : ' errorCode ' - ' errorMessage);
)?2. Привет! У меня нет никакой ошибки. И вот мой код: pastebin.com/EfbVaJXi
Ответ №1:
Ваша проблема, скорее всего, связана с тем фактом, что ваша форма отправляется до signInWithEmailAndPassword()
запуска метода Firebase.
Как видно из кода формы, вы объявляете свою кнопку с типом submit
:
<form class="form-signin">
// ....
<button id="signing" class="..." type="submit">Se connecter</button>
// ....
</form>
Вы не хотите отправлять форму, вы просто хотите получить значения, введенные в поля, и передать их signInWithEmailAndPassword()
методу.
Итак, если вы присвоите button
своей кнопке тип, как показано ниже, это должно решить вашу проблему, потому что форма не будет отправлена.
<button id="signing" class="..." type="button">Se connecter</button>