Création d'un formulaire de connexion et d'inscription de base à l'aide de javascript et jQuery avec authentification par email/mot de passe firebase.Enregistrement de l'utilisateur et connexion à l'aide de l'erreur firebase "Reference.push failed: second argument doit être une fonction valide"
Cependant, je reçois cette erreur « Reference.push a échoué: deuxième argument doit être une fonction valide » dans ma console @ cette ligne
database.ref().push(emailnew, passwordnew);
J'ai cherché ici sur stackoverflow et à l'intérieur du firebase docs pour voir comment corriger ce problème, mais je viens les mains vides. Je pense aussi que mon fichier JS pourrait avoir plus de choses que nécessaire mais je ne suis pas sûr de savoir comment le simplifier. En ce moment, rien n'est poussé vers la base de données. Je ne suis pas complètement familier avec Firebase donc tous les conseils supplémentaires seraient incroyablement utiles, merci.
Idéalement, en cas de création ou de connexion réussie d'un nouveau compte utilisateur, cette page d'accueil redirige l'utilisateur vers la page d'application réelle.
Voici le formulaire HTML
Inscription
<div class="field-wrap">
<label>
Name<span class="req">*</span>
</label>
<input type="name" id="name" required autocomplete="off"/>
</div>
<div class="field-wrap">
<label>
Email Address<span class="req">*</span>
</label>
<input type="email-signup" id="emailSignup" required autocomplete="off"/>
</div>
<div class="field-wrap">
<label>
Set A Password<span class="req">*</span>
</label>
<input type="password-signup" id="passwordSignup" required autocomplete="off"/>
</div>
<button type="" id="signupbutton" />Get Started</button>
</div>
<!-- User Login Form -->
<div id="login">
<h1>Welcome</h1>
<div class="field-wrap">
<label>
Email Address<span class="req"></span>
</label>
<input type="emailLogin" id="emailLogin" required autocomplete="off"/>
</div>
<div class="field-wrap">
<label>
Password<span class="req"></span>
</label>
<input type="passwordLogin" id="passwordLogin" required autocomplete="off"/>
</div>
<p class="forgot"><a href="#">Forgot Password?</a></p>
<button class="button button-block" id="login" />Log In</button>
<div id=loginmessage>
</div>
Voici mon user.js fichier avec intergration firebase comme suit:
// Initialize Firebase
var config = {
apiKey: 'AIzaSyBU1fYqhQrVskqgA0Okr3ZStPfYz0s3QWQ',
authDomain: "https://lackluster-5966e.firebaseapp.com",
databaseURL: 'https://lackluster-5966e.firebaseio.com',
projectId: "lackluster-5966e",
storageBucket: 'https://lackluster-5966e.appspot.com',
messagingSenderId: "489067404953"
};
firebase.initializeApp(config);
// var firebaseref = new Firebase("https://lackluster-5966e.firebaseapp.com");
var database = firebase.database();
var auth = firebase.auth();
var user = firebase.auth().currentUser;
console.log(config);
var emailnew;
var passwordnew;
//Collect User Data from Signup
$("#signupbutton").click(function(event){
event.preventDefault();
emailnew = $("#emailSignup").val();
passwordnew = $("#passwordSignup").val();
database.ref().push(emailnew, passwordnew); //Error occurs
console.log(emailnew);
console.log(passwordnew);
});
//Creates New User via Firebase Authentication
var promise = auth.createUserWithEmailAndPassword(emailnew, passwordnew);
promise.then(function(user) {
user.sendEmailVerification().then(function() {
// Email sent.
}, function(error) {
// An error happened.
});
//Sends User Info to firebase DB
user.updateProfile({
Name: name,
Email: emailnew
}).then(function() {
// Update successful.
}, function(error) {
// An error happened.
});
// Clears all of the text-boxes for user signup
$("#emailSignup").val("");
$("#passwordSignup").val("");
//User Login Event
var emailLogin = document.getElementById('emailLogin');
var passwordLogin = document.getElementById('passwordLogin');
$("#login").click(function(event){
event.preventDefault();
var email = emailLogin.value;
var password = passwordLogin.value;
var auth = firebase.auth();
var promise = auth.signInWithEmailAndPassword(email, password);
promise.catch(function (e) {
return console.log(e.message);
});
// //Page redirect
// firebase.auth().onAuthStateChanged(user => {
// if(user) {
// window.location = 'index.html';
// }
// else{
// //Do nothing.
// }
// });
// Authentication Listner
// Verifies that login credentials are correct otherwise returns error message
var Message = "<div class=\"loginmessage\">" + "Login Unsuccessful" + "</div>";
firebase.auth().onAuthStateChanged(function (firebaseUser) {
if (firebaseUser) {
console.log(firebaseUser);
} else {
$('#loginmessage').append(Message);
console.log('not logged in');
} // end else statement
}); // end function
});
// Clears all of the text-boxes for user login
$("#emailLogin").val("");
$("#passwordLogin").val("")
});
Merci! Cela a résolu mon problème d'appel et le journal de la console affiche les valeurs entrées, mais les données entrées ne sont pas remplies dans Firebase. Je pense qu'il y a un problème avec mes appels mais je n'arrive pas à comprendre quel est le problème. – chlc