【问题标题】:Firebase Google AuthFirebase 谷歌身份验证
【发布时间】:2015-09-17 20:38:17
【问题描述】:

使用提供的非常清晰的简单示例 (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 应用仪表板中都正确设置了所有内容。

提前感谢您的任何建议!

【问题讨论】:

  • ...顺便说一句 ref.authWithOAuthPopup 工作得很好。我很确定这个问题与对重定向的错误处理有关。
  • 从页面返回后,能否刷新一下,看看是否登录?
  • @DavidEast 刚刚回到这个...如果您刷新它会尝试再次进行身份验证。

标签: firebase firebase-security


【解决方案1】:

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

在 Google 的往返过程中,Firebase ref 加载和接收身份验证信息需要大约 250 毫秒。所以你的应用加载了,但认为它没有经过身份验证,因为在应用加载的那一刻,Firebase ref 还没有经过身份验证。

答案是在引导代码的某处添加onAuth() Firebase 方法。 onAuth() 将监听您的 Firebase 引用状态的变化,并且可以在经过身份验证时触发一种方法,在未经身份验证时触发另一种方法。我会试一试,看看是否适合你。

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 2018-04-30
    • 2023-03-14
    • 1970-01-01
    • 2021-12-20
    • 2016-12-08
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多