![](/img/trans.png)
[英]connect firebase authentication with realtime database from firebase
[英]Cannot fetch a Firebase Realtime Database with anonymous authentication
我正在构建一个 React web 应用程序,它通过 Firebase 实时数据库查看 JSON 数据库。 无需身份验证即可获取数据!
fetch('https://my-awesome-site.firebaseio.com/database.json')
.then(res => {
if(!res.ok) {
throw Error('Could not fetch data for that resource, Captain.')
}
return res.json();
})
.then(data => {
setAwesomeData(data);
setIsPending(false);
setError(null);
return data;
})
.catch(err => {
setIsPending(false);
setError(err.message);
})
实时数据库的规则如下:
{
"rules": {
".read": "true",
".write": "true"
}
}
我现在正在尝试允许匿名身份验证。 我已通过“登录方法”启用它,并将 function 添加到我的 javascript 以匿名登录并控制台登录用户。
const [authenticated, setAuthenticated] = useState(false);
if (authenticated !== true) {
firebase.app().auth().signInAnonymously()
.then(() => {
firebase.app().auth().onAuthStateChanged((user) => {
if(user) {
var uid = user.uid;
console.log(uid);
}
})
}).then(() => {
setAuthenticated(true);
}).catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
});
}
我的实时数据库规则现在是:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
创建了匿名用户,但是,我无法像以前那样获取我的数据。 在 Firebase 或可能在我的 javascript 中设置规则时,我是否遗漏了一个步骤? 感谢您的任何帮助!
当您在代码中登录 Firebase 身份验证时,您将使用 REST API 访问 Firebase 的实时数据库。 身份验证信息不会自动传递给那些 REST 调用(因为 Firebase 客户端对调用一无所知),因此您对数据库的调用未经身份验证并被(正确地)拒绝。
您必须自己明确地通过身份验证 state,如 Firebase 文档中关于身份验证 REST 调用的说明,或者(更简单)您可以使用 Firebase 实时数据库 SDK ,它会自动传递信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.