¿Usas correctamente la autenticación de Firebase?

¿Usas correctamente la autenticación de Firebase?

Estoy trabajando en una aplicación nodejs. Actualmente tengo una página de inicio de sesión y una página de inicio a las que debería poder accederse después de que el usuario inicie sesión.

Decidí usar la autenticación de Google y Facebook proporcionada por Firebase. Lo he implementado, pero no estoy seguro de si esta es la forma correcta de hacerlo. Firebase también proporciona un SDK de administrador, ¿debo usarlo?

Aquí está mi código: página de inicio de sesión -

<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase.js"></script>
<script>
    // Initialize Firebase
    var config = {
        apiKey: "*****", authDomain: "*****", databaseURL: "*****", projectId: "*****", storageBucket: "*****", messagingSenderId: "*****"
    };
    firebase.initializeApp(config);
</script>

<script src="https://cdn.firebase.com/libs/firebaseui/2.6.2/firebaseui.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.6.2/firebaseui.css" />
<script type="text/javascript">
    // FirebaseUI config.
    var uiConfig = {
        signInSuccessUrl: '/home',
        signInOptions: [
            firebase.auth.GoogleAuthProvider.PROVIDER_ID,
            firebase.auth.FacebookAuthProvider.PROVIDER_ID,
        ],
        tosUrl: '/terms-of-use'
    };

    var ui = new firebaseui.auth.AuthUI(firebase.auth());
    ui.start('#firebaseui-auth-container', uiConfig);
</script>
<script>
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            window.location.replace("/home");
        } else {

        }
    }, function (error) {
        console.log(error);
    });
</script>

página de inicio-

<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase.js"></script>
    <script>
        // Initialize Firebase
        var config = {
            apiKey: "*****", authDomain: "*****", databaseURL: "*****", projectId: "*****", storageBucket: "*****", messagingSenderId: "*****"
        };
        firebase.initializeApp(config);
    </script>

    <script>
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            // User is signed in.
        } else {
            window.location.replace("/");
        }
    }, function (error) {
        console.log(error);
    });

    var signOutButton = document.getElementById("sign-out-btn");
    signOutButton.addEventListener("click", function () {
        firebase.auth().signOut().then(function () {
            // Sign-out successful.
        }).catch(function (error) {
            // An error happened.
        });
    });
    </script>

Básicamente, no puedo averiguar dónde encajar firebase en la aplicación y si lo estoy usando de la mejor manera posible. Hay mucha configuración aquí y muy poco en términos de código que tengo que escribir y eso también me hace sentir un poco incómodo. ¿Podría alguien explicar que se debe usar la autenticación de firebase o apuntar en la dirección correcta? Gracias.

Mostrar la mejor respuesta

La inicio de la documentación del SDK de administrador dice:

El SDK de Admin te permite interactuar con Firebase desde entornos privilegiados...

Un entorno privilegiado es algo que usted controla, p. su computadora portátil / computadora de escritorio, un servidor que está utilizando para alojar cosas o las funciones en la nube para su proyecto. Si se trata de una página web que va a compartir con los usuarios habituales de su aplicación, entonces no debería usar el SDK de administrador.

La configuración que tiene en la parte superior es solo un conjunto de propiedades que permiten que los distintos SDK de Firebase encuentren su proyecto en los servidores de Google. Exponerlos a los clientes habituales no es una fuga de seguridad y, de hecho, es necesario para permitirles acceder al backend de su aplicación.

El código que compartió se ve bien. Si no está seguro del enfoque, puede que le resulte más fácil tomar primero el Codelab de Firebase para desarrolladores web, que lo guiará a través de la creación de una aplicación de chat con Firebase.

Gracias, voy a pasar por codelab. Creo que la mayor parte de mi confusión se debe a que solo usé sesiones de PHP y PHP para la autenticación. La autenticación del lado del cliente es un juego de pelota diferente.

Sí, eso de hecho hace una gran diferencia. Simplemente tome el codelab o siga algún otro tutorial. Una vez que las cosas se aclaren, se preguntará por qué creó su propia autenticación del lado del servidor. Al menos, eso es lo que hice. :-)