正确使用Firebase身份验证?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正确使用Firebase身份验证?相关的知识,希望对你有一定的参考价值。

我正在开发一个nodejs应用程序。目前我有一个登录页面和一个主页,用户登录后应该可以访问。

我决定使用Firebase提供的Google和Facebook身份验证。我已经实现了它,但我不确定这是否是正确的方法。 Firebase也提供了admin-sdk,我是否需要使用它?

这是我的代码 - 登录页面 -

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

主页-

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

基本上我无法弄清楚在应用程序中适合firebase的位置以及我是否以最佳方式使用它。这里有很多配置,而且我必须写的代码很少,这让我有点不舒服。可以请任何人解释firebase auth应该使用或指向正确的方向。谢谢。

答案

getting started with the Admin SDK documentation说:

Admin SDK允许您从特权环境与Firebase进行交互...

特权环境是您可以控制的,例如:您的笔记本电脑/台式机,用于托管内容的服务器,或项目的云功能。如果这是您要与应用的常规用户共享的网页,则您不应使用Admin SDK。

您在顶部的配置只是一系列属性,允许各种Firebase SDK在Google服务器上查找您的项目。将这些暴露给常规客户并不是安全漏洞,事实上,必须允许他们访问您的应用程序的后端。

你分享的代码看起来很好。如果您不确定该方法,您可能会发现首先使用Firebase codelab for web developers更容易,它会引导您使用Firebase构建聊天应用程序。

以上是关于正确使用Firebase身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

“此应用无权使用 Firebase 身份验证”

将 Firebase 身份验证与 Firestore 一起使用的正确方法是啥?

Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)

此应用无权使用 Firebase 身份验证。请确认在 Firebase 中配置了正确的包名称和 SHA-1

在 Firebase 中使用 Google 身份验证未收到电子邮件

反应本机 Firebase 身份验证错误