使用提供的非常简单的简单示例(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中正确设置了所有内容。
提前感谢任何建议!
答案 0 :(得分:0)
我今天偶然发现了同样的问题。问题在于此(据我所知):当您使用authWithRedirect
时,您的浏览器会在转向Google的途中从您的网络应用程序重定向,从而有效地将其吹走(包括Firebase参考)。
在Google的往返旅程中,Firebase引用加载和接收身份验证信息需要250毫秒。因此,您的应用会加载,但不会认为它经过身份验证,因为在应用加载时,Firebase ref尚未经过身份验证。
答案是在引导代码中的某处添加onAuth()
Firebase方法。 onAuth()
会监听Firebase ref状态的变化,并且可以在验证时触发一个方法,而在未经身份验证时触发另一个方法。我给你一个旋转,看看它是否适合你。