Curso Firebase / Firestore desde cero 💪 (Parte I)

Curso Firebase / Firestore desde cero 💪


#1 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • Ir a página de firebase.
  • Crear un nuevo proyecto y nombrarlo Usuarios.
  • Clic en Authentication.
  • Clic en Configurar el método de acceso.
  • Clic en Correo electrónico/contraseña como proveedor.
  • Clic en Habilitar y guardar.
  • Volvemos al panel de administración haciendo clic en Descripción general.
  • Clic en aplicación web.
  • Seguimos los pasos para registrar la aplicación (Por ahora no habilitar hosting).
  • Copiamos el código JavaScript.
  • Seguir todas las instrucciones del asistente de Firebase.
  • Crear una carpeta en C:\xampp\htdocs\firebase (o su equivalente según el servidor local que tengas instalado) para crear un proyecto vacio.
  • Abrir proyecto con Visual Studio Code (o algún otro de tu preferencia).
  • Crear archivo de nombre index.html y escribir:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Firebase</title>
</head>
<body>
    <script src="app.js"></script>
</body>
</html>
  • Crar archivo app.js.

#2 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • Copiar en la parte inferior de la etiqueta <body> antes de usar cualquier servicio de Firebase el código de JavaScript que habíamos copiado en la sección anterior.
  • index.html:
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Prueba</title>
  </head>
  <body>
    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase.js"></script>
    <!-- Abajo script erroneo proporcionado por Firebase y arriba el script corregido -->
    <!--<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>-->

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->

    <script>
      // Your web app's Firebase configuration
      var firebaseConfig = {
        apiKey: "AIzaSyAr0HTbV64vpe6vKsmV9wslKc5o0uto0ag",
        authDomain: "prueba-33-97826.firebaseapp.com",
        databaseURL: "https://prueba-33-97826.firebaseio.com",
        projectId: "prueba-33-97826",
        storageBucket: "prueba-33-97826.appspot.com",
        messagingSenderId: "165991934861",
        appId: "1:165991934861:web:d789ae12f48a9e0c822bc4",
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    </script>
    <input id="email" type="email" placeholder="Ingresa email" />
    <input id="contrasena" type="password" placeholder="Ingresa contraseña" />
    <button onclick="registrar()">Enviar</button>
    <script src="app.js"></script>
  </body>
</html>
  • app.js:
function registrar() {
    var email = document.getElementById('email').value;
    var password = document.getElementById('contrasena').value;

    firebase.auth().createUserWithEmailAndPassword(emailpassword).catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;
        
        console.log(errorCode);
        console.log(errorMessage);
    });
}


#3 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • index.html:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Prueba</title>
    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase.js"></script>
    <!-- Abajo script erroneo proporcionado por Firebase y arriba el script corregido -->
    <!--<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>-->

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->

    <script>
      // Your web app's Firebase configuration
      var firebaseConfig = {
        apiKey: "AIzaSyAr0HTbV64vpe6vKsmV9wslKc5o0uto0ag",
        authDomain: "prueba-33-97826.firebaseapp.com",
        databaseURL: "https://prueba-33-97826.firebaseio.com",
        projectId: "prueba-33-97826",
        storageBucket: "prueba-33-97826.appspot.com",
        messagingSenderId: "165991934861",
        appId: "1:165991934861:web:d789ae12f48a9e0c822bc4",
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    </script>
</head>
<body>
    <h4>Registro de usuarios</h4>
    <input id="email" type="email" placeholder="Ingresa email" />
    <input id="contrasena" type="password" placeholder="Ingresa contraseña" />
    <button onclick="registrar()">Enviar</button>

    <h4>Ingreso de usuarios</h4>
    <input id="email2" type="email" placeholder="Ingresa email" />
    <input id="contrasena2" type="password" placeholder="Ingresa contraseña" />
    <button onclick="ingreso()">Acceder</button>

    <div id="contenido"></div>

    <script src="app.js"></script>    
</body>
</html>
  • app.js:
function registrar() {
    var email = document.getElementById('email').value;
    var password = document.getElementById('contrasena').value;

    firebase.auth().createUserWithEmailAndPassword(emailpassword).catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;

        console.log(errorCode);
        console.log(errorMessage);
    });
}

function ingreso() {
    var email = document.getElementById('email2').value;
    var password = document.getElementById('contrasena2').value;

    firebase.auth().signInWithEmailAndPassword(emailpassword).catch(function (error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
        console.log(errorCode);
        console.log(errorMessage);
    });
}

function observador() {
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            console.log('Si existe');
            aparece();
            // User is signed in.
            var displayName = user.displayName;
            var email = user.email;
            console.log(email);
            var emailVerified = user.emailVerified;
            var photoURL = user.photoURL;
            var isAnonymous = user.isAnonymous;
            var uid = user.uid;
            var providerData = user.providerData;
            // ...
        } else {
            // User is signed out.
            console.log('No existe');
            // ...
        }
    });
}

function aparece(){
    var contenido = document.getElementById('contenido');
    contenido.innerHTML = "Solo lo ve usuario activo";
}

observador();

#4 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • index.html:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Prueba</title>
    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase.js"></script>
    <!-- Abajo script erroneo proporcionado por Firebase y arriba el script corregido -->
    <!--<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>-->

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->

    <script>
      // Your web app's Firebase configuration
      var firebaseConfig = {
        apiKey: "AIzaSyAr0HTbV64vpe6vKsmV9wslKc5o0uto0ag",
        authDomain: "prueba-33-97826.firebaseapp.com",
        databaseURL: "https://prueba-33-97826.firebaseio.com",
        projectId: "prueba-33-97826",
        storageBucket: "prueba-33-97826.appspot.com",
        messagingSenderId: "165991934861",
        appId: "1:165991934861:web:d789ae12f48a9e0c822bc4",
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    </script>
</head>
<body>
    <h4>Registro de usuarios</h4>
    <input id="email" type="email" placeholder="Ingresa email" />
    <input id="contrasena" type="password" placeholder="Ingresa contraseña" />
    <button onclick="registrar()">Enviar</button>

    <h4>Ingreso de usuarios</h4>
    <input id="email2" type="email" placeholder="Ingresa email" />
    <input id="contrasena2" type="password" placeholder="Ingresa contraseña" />
    <button onclick="ingreso()">Acceder</button>

    <div id="contenido"></div>

    <script src="app.js"></script>    
</body>
</html>
  • app.js:
function registrar() {
    var email = document.getElementById('email').value;
    var password = document.getElementById('contrasena').value;

    firebase.auth().createUserWithEmailAndPassword(emailpassword).catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;

        console.log(errorCode);
        console.log(errorMessage);
    });
}

function ingreso() {
    var email = document.getElementById('email2').value;
    var password = document.getElementById('contrasena2').value;

    firebase.auth().signInWithEmailAndPassword(emailpassword).catch(function (error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
        console.log(errorCode);
        console.log(errorMessage);
    });
}

function observador() {
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            console.log('Si existe');
            aparece();
            // User is signed in.
            var displayName = user.displayName;
            var email = user.email;
            console.log(email);
            var emailVerified = user.emailVerified;
            var photoURL = user.photoURL;
            var isAnonymous = user.isAnonymous;
            var uid = user.uid;
            var providerData = user.providerData;
            // ...
        } else {
            // User is signed out.
            console.log('No existe');
            // ...
        }
    });
}

function aparece(){
    var contenido = document.getElementById('contenido');
    contenido.innerHTML = `
        <p>Bienvenido</p>
        <button onclick="cerrar()">Cerrar sesión</button>
    `;
}

function cerrar(){
    firebase.auth().signOut()
    .then(function(){
        console.log('Saliendo...');
    })
    .catch(function(error){
        console.log(error);
    });
}

observador();

#5 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • Ir a Firebase.
  • Entrar al proyecto e ir a Desarrollo, Authentication y finalmente Templates.
  • Cambiar el idioma a español.
  • Modificar plantilla del correo que le llegará al usuario cuidadosamente.
  • app.js:
function registrar() {
    var email = document.getElementById('email').value;
    var password = document.getElementById('contrasena').value;

    firebase.auth().createUserWithEmailAndPassword(emailpassword)
    .then(function(){
        verificar()
    })
    .catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;

        console.log(errorCode);
        console.log(errorMessage);
    });
}

function ingreso() {
    var email = document.getElementById('email2').value;
    var password = document.getElementById('contrasena2').value;

    firebase.auth().signInWithEmailAndPassword(emailpassword).catch(function (error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
        console.log(errorCode);
        console.log(errorMessage);
    });
}

function observador() {
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            console.log('Si existe');
            aparece(user);
            // User is signed in.
            var displayName = user.displayName;
            var email = user.email;
            var emailVerified = user.emailVerified;
            console.log('**************');
            console.log(emailVerified);
            console.log('**************');
            var photoURL = user.photoURL;
            var isAnonymous = user.isAnonymous;
            var uid = user.uid;
            var providerData = user.providerData;
            // ...
        } else {
            // User is signed out.
            console.log('No existe');
            // ...
        }
    });
}

function aparece(user){
    var user = user;
    var contenido = document.getElementById('contenido');
    if(user.emailVerified){
        contenido.innerHTML = `
            <p>Bienvenido</p>
            <button onclick="cerrar()">Cerrar sesión</button>
        `;
    }
}

function cerrar(){
    firebase.auth().signOut()
    .then(function(){
        console.log('Saliendo...');
    })
    .catch(function(error){
        console.log(error);
    });
}

function verificar(){
    var user = firebase.auth().currentUser;

    user.sendEmailVerification().then(function() {
      // Email sent.
      console.log('Enviando correo...');
    }).catch(function(error) {
      // An error happened.
      console.log('Error al envíar correo...');
    });
}

observador();


#6 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • Incorporamos los CDN de Bootstrap en el archivo index.html.
  • index.html:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Prueba</title>

    <!-- CSS only -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

    <!-- JS, Popper.js, and jQuery -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase.js"></script>
    <!-- Abajo script erroneo proporcionado por Firebase y arriba el script corregido -->
    <!--<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>-->

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->

    <script>
      // Your web app's Firebase configuration
      var firebaseConfig = {
        apiKey: "AIzaSyAr0HTbV64vpe6vKsmV9wslKc5o0uto0ag",
        authDomain: "prueba-33-97826.firebaseapp.com",
        databaseURL: "https://prueba-33-97826.firebaseio.com",
        projectId: "prueba-33-97826",
        storageBucket: "prueba-33-97826.appspot.com",
        messagingSenderId: "165991934861",
        appId: "1:165991934861:web:d789ae12f48a9e0c822bc4",
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    </script>
</head>
<body>
    <div class="contaniner mt-3">
        <nav class="navbar navbar-dark bg-primary">
            <a class="navbar-brand">Navbar</a>
            <div class="form-inline">
                <input id="email" type="email" placeholder="Ingresa email" class="form-control form-control-sm mr-sm-2" />
                <input id="contrasena" type="password" placeholder="Ingresa contraseña" class="form-control form-control-sm mr-sm-2" />
                <button class="btn btn-dark my-2 my-sm-0 btn-sm" onclick="registrar()">Acceder</button>
                <button class="btn btn-danger my-2 my-sm-0 btn-sm ml-2">Registrar</button>
            </div>
        </nav>
    </div>

    <h4>Registro de usuarios</h4>
    
    <button onclick="registrar()">Enviar</button>

    <h4>Ingreso de usuarios</h4>
    <input id="email2" type="email" placeholder="Ingresa email" />
    <input id="contrasena2" type="password" placeholder="Ingresa contraseña" />
    <button onclick="ingreso()">Acceder</button>

    <div id="contenido"></div>

    <script src="app.js"></script>    
</body>
</html>

#7 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • index.html:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Prueba</title>

    <!-- CSS only -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

    <!-- JS, Popper.js, and jQuery -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase.js"></script>
    <!-- Abajo script erroneo proporcionado por Firebase y arriba el script corregido -->
    <!--<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>-->

    <!-- TODO: Add SDKs for Firebase products that you want to use
    https://firebase.google.com/docs/web/setup#available-libraries -->

    <script>
      // Your web app's Firebase configuration
      var firebaseConfig = {
        apiKey: "AIzaSyAr0HTbV64vpe6vKsmV9wslKc5o0uto0ag",
        authDomain: "prueba-33-97826.firebaseapp.com",
        databaseURL: "https://prueba-33-97826.firebaseio.com",
        projectId: "prueba-33-97826",
        storageBucket: "prueba-33-97826.appspot.com",
        messagingSenderId: "165991934861",
        appId: "1:165991934861:web:d789ae12f48a9e0c822bc4",
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);
    </script>
</head>
<body>
    <div class="contaniner mt-3">
        <nav class="navbar navbar-dark bg-primary">
            <a class="navbar-brand">Navbar</a>
            <div class="form-inline">
                <input id="email2" type="email" placeholder="Ingresa email" class="form-control form-control-sm mr-sm-2" />
                <input id="contrasena2" type="password" placeholder="Ingresa contraseña" class="form-control form-control-sm mr-sm-2" />
                <button class="btn btn-dark my-2 my-sm-0 btn-sm" onclick="ingreso()">Acceder</button>
                <button class="btn btn-danger my-2 my-sm-0 btn-sm ml-2" data-toggle="modal" data-target="#exampleModal">Registrar</button>
            </div>
        </nav>
    </div>

    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Formulario de registro</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                </div>
                <div class="modal-body">
                    <input id="email" type="email" placeholder="Ingresa email" class="form-control"/>
                    <div class="mt-2"></div>
                    <input id="contrasena" type="password" placeholder="Ingresa contraseña" class="form-control" />
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
                    <button type="button" class="btn btn-primary" onclick="registrar()">Guardar</button>
                </div>
            </div>
        </div>
    </div>

    <div id="contenido"></div>
    
    <script src="app.js"></script>    
</body>
</html>

#8 Firebase y Bootstrap 4 - Registro de usuarios con email y contraseña - Aprende a crear un Login

Apuntes:

  • app.js:
function registrar() {
    var email = document.getElementById('email').value;
    var password = document.getElementById('contrasena').value;

    firebase.auth().createUserWithEmailAndPassword(emailpassword)
    .then(function(){
        verificar()
    })
    .catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;

        console.log(errorCode);
        console.log(errorMessage);
    });
}

function ingreso() {
    var email = document.getElementById('email2').value;
    var password = document.getElementById('contrasena2').value;

    firebase.auth().signInWithEmailAndPassword(emailpassword).catch(function (error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
        console.log(errorCode);
        console.log(errorMessage);
    });
}

function observador() {
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            console.log('Si existe');
            aparece(user);
            // User is signed in.
            var displayName = user.displayName;
            var email = user.email;
            var emailVerified = user.emailVerified;
            console.log('**************');
            console.log(emailVerified);
            console.log('**************');
            var photoURL = user.photoURL;
            var isAnonymous = user.isAnonymous;
            var uid = user.uid;
            var providerData = user.providerData;
            // ...
        } else {
            // User is signed out.
            console.log('No existe');
            contenido.innerHTML = ``;
            // ...
        }
    });
}

function aparece(user){
    var user = user;
    var contenido = document.getElementById('contenido');
    if(user.emailVerified){
        contenido.innerHTML = `
        <div class="container mt-5">
            <div class="alert alert-success" role="alert">
            <h4 class="alert-heading">Bienvenido ${user.email}!</h4>
            <p>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.</p>
            <hr>
            <p class="mb-0">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.</p>
            </div>
            <button onclick="cerrar()" class="btn btn-danger">Cerrar sesión</button>
        </div>
        `;
    }
}

function cerrar(){
    firebase.auth().signOut()
    .then(function(){
        console.log('Saliendo...');
    })
    .catch(function(error){
        console.log(error);
    });
}

function verificar(){
    var user = firebase.auth().currentUser;

    user.sendEmailVerification().then(function() {
      // Email sent.
      console.log('Enviando correo...');
    }).catch(function(error) {
      // An error happened.
      console.log('Error al envíar correo...');
    });
}

observador();

Comentarios

Entradas más populares de este blog

Algunas páginas de cursos online recopiladas por Soluciones++

Soluciones++ para Laravel