Redirect Firebase:Google OAuth无限重定向

Redirect Firebase:Google OAuth无限重定向,redirect,oauth,firebase,infinite,Redirect,Oauth,Firebase,Infinite,我对Firebase还是个新手。我正在尝试将Google OAuth连接到我的Firebase实例 我把一切都安排好了,拿到了客户ID和客户机密。我将localhost添加到Firebase仪表板的白名单中。然后,我使用了下面的Firebase示例: <html> <head> <script src="https://cdn.firebase.com/js/client/2.0.4/firebase.js"></script> <s

我对Firebase还是个新手。我正在尝试将Google OAuth连接到我的Firebase实例

我把一切都安排好了,拿到了客户ID和客户机密。我将localhost添加到Firebase仪表板的白名单中。然后,我使用了下面的Firebase示例:

<html>
<head>
  <script src="https://cdn.firebase.com/js/client/2.0.4/firebase.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script>

  var ref = new Firebase("https://<firebase url>.firebaseio.com");
  ref.authWithOAuthRedirect("google", function(error, authData) {
    if (error) {
      console.log("Login Failed!", error);
    } else {
      console.log("Authenticated successfully with payload:", authData);
    }
  });

</script>
</body>
</html>

var ref=新的火基(“https://.firebaseio.com");
ref.authWithOAuthRedirect(“谷歌”,函数(错误,authData){
如果(错误){
log(“登录失败!”,错误);
}否则{
log(“使用有效负载成功进行身份验证:”,authData);
}
});
当我打开它时,它会请求获得谷歌认证的许可。当我接受它时,它只是继续执行重定向(无限),并且没有完成加载。对这个问题的任何见解都会有所帮助。谢谢

编辑:
我注意到:authWithOAuthPopup()方法可以工作,但重定向卡在无限重定向循环中。

无论何时调用
ref.authWithOAuthRedirect(…)
,您都会告诉Firebase启动基于重定向的身份验证流,并将浏览器重定向到OAuth提供程序。调用此方法将始终尝试创建一个新会话,即使浏览器中已经存在一个会话

要仅在不存在登录会话的情况下尝试创建新的登录会话,请尝试使用
onAuth(…)
事件侦听器执行以下操作:

var ref = new Firebase("https://<firebase url>.firebaseio.com");
ref.onAuth(function(authData) {
  if (authData !== null) {
    console.log("Authenticated successfully with payload:", authData);
  } else {
    // Try to authenticate with Google via OAuth redirection
    ref.authWithOAuthRedirect("google", function(error, authData) {
      if (error) {
        console.log("Login Failed!", error);
      }
    });
  }
})
var ref=新Firebase(“https://.firebaseio.com");
参考onAuth(函数(authData){
if(authData!==null){
log(“使用有效负载成功进行身份验证:”,authData);
}否则{
//尝试通过OAuth重定向与Google进行身份验证
ref.authWithOAuthRedirect(“谷歌”,函数(错误,authData){
如果(错误){
log(“登录失败!”,错误);
}
});
}
})

无论何时调用
ref.authWithOAuthRedirect(…)
,您都会告诉Firebase启动基于重定向的身份验证流,并将浏览器重定向到OAuth提供程序。调用此方法将始终尝试创建一个新会话,即使浏览器中已经存在一个会话

要仅在不存在登录会话的情况下尝试创建新的登录会话,请尝试使用
onAuth(…)
事件侦听器执行以下操作:

var ref = new Firebase("https://<firebase url>.firebaseio.com");
ref.onAuth(function(authData) {
  if (authData !== null) {
    console.log("Authenticated successfully with payload:", authData);
  } else {
    // Try to authenticate with Google via OAuth redirection
    ref.authWithOAuthRedirect("google", function(error, authData) {
      if (error) {
        console.log("Login Failed!", error);
      }
    });
  }
})
var ref=新Firebase(“https://.firebaseio.com");
参考onAuth(函数(authData){
if(authData!==null){
log(“使用有效负载成功进行身份验证:”,authData);
}否则{
//尝试通过OAuth重定向与Google进行身份验证
ref.authWithOAuthRedirect(“谷歌”,函数(错误,authData){
如果(错误){
log(“登录失败!”,错误);
}
});
}
})

你能在JSFiddle/JSBin中重现这个吗?在JSFiddle中我得到:{“错误”:“请使用POST请求”}你能在JSFiddle/JSBin中重现这个吗?在JSFiddle中我得到:{“错误”:“请使用POST请求”}太棒了!非常感谢。我认为我对javascript了解得足够多,但仍然不熟悉所有不同的Firebase方法。这太棒了,太棒了!非常感谢。我认为我对javascript了解得足够多,但仍然不熟悉所有不同的Firebase方法。这很有效。