Firebase Google Auth

时间:2015-09-17 20:38:17

标签: firebase firebase-security

使用提供的非常简单的简单示例(Firebase Google Auth),我无法获得Google的授权。好吧,我有,但不是一直意味着我实际上已经将对象取回了几次......但是如果我使用ref.unauth()注销它将无法再次运行。搜索高低我一直无法找到其他类似的东西。我不得不遗漏一些东西。我真的不确定在这里分享什么才能理解。这就是我在页面中的全部内容:

<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Contacts</title>
    <script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'></script>


    <script type="text/javascript">
        var contactsRef = new Firebase('https://my-notreal-firebaseapp.firebaseio.com/contacts');
        var authData = contactsRef.getAuth();

        if (authData) {
          console.log("User " + authData.uid + " is logged in with " + authData.provider);
        } else {
            console.log("User is logged out");
            contactsRef.authWithOAuthRedirect("google", function(error,authData){
                //do stuff post authentication
            },{

                remember: "sessionOnly",
                scope: "email"
            });
        }
    </script>
</head>
<body>
</body>
</html>

每次重定向回登录。我有多个Google帐户,因此它实际上是指向“选择帐户”页面。我也设置了非常简单的规则。

    {
    "rules": {
        "contacts":{

              ".read": true,
              ".write": true
        }
      }
    }

我仔细检查以确保我在Google Developers Console和Firebase App Dashboard中正确设置了所有内容。

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

我今天偶然发现了同样的问题。问题在于此(据我所知):当您使用authWithRedirect时,您的浏览器会在转向Google的途中从您的网络应用程序重定向,从而有效地将其吹走(包括Firebase参考)。

在Google的往返旅程中,Firebase引用加载和接收身份验证信息需要250毫秒。因此,您的应用会加载,但不会认为它经过身份验证,因为在应用加载时,Firebase ref尚未经过身份验证。

答案是在引导代码中的某处添加onAuth() Firebase方法。 onAuth()会监听Firebase ref状态的变化,并且可以在验证时触发一个方法,而在未经身份验证时触发另一个方法。我给你一个旋转,看看它是否适合你。