我构建了自己的应用程序,以通过http.post请求将数据发送到Firebase RealtimeDB,直到添加了读写规则为止,一切工作都很好,
{
"rules": {
".read" : false,
".write" : false,
"client":{
"$uid":{
".read": "auth.uid === $uid",
".write": "auth.uid === $uid"
}
}
}
}
请求的代码如下:
createClient (ClientModel client) async{
final userData = new SavedUserData();
final url = '$_dbUrl/cliente/${userData.uid}.json?auth=${userData.uid}';
final resp = await http.post(url, body: clientModelToJson(client));
我收到一个解析错误,但我得到了,auth未发送.json文件,但均未发送:
似乎可以解决问题!
我几乎可以肯定我犯了一个新秀错误,但是我似乎看不到哪里。谢谢您的宝贵时间!
答案 0 :(得分:0)
不可能向实时数据库REST API发送任意UID。实际上,这实际上是一个很大的安全漏洞-它将允许任何具有Internet连接的人冒充仅知道其UID的注册用户。
为了了解auth如何与RTDB一起使用,请从documentation开始。您可以通过两种方式传递身份验证令牌:
通过以下方法之一对用户进行身份验证:
Google OAuth2访问令牌-通常,由实时数据库控制读写实时数据库的能力 规则。但是,您可以从服务器访问数据并将其授予 服务器使用Google OAuth2对您的数据具有完全的读写访问权限 从服务帐户生成的访问令牌。
Firebase ID令牌-您可能还希望发送通过个人用户身份验证的请求,例如限制访问 客户端SDK上的实时数据库规则。 REST API接受 客户端SDK使用相同的Firebase ID令牌。
您将需要传递一个ID令牌(不是UID),该令牌只能通过最终用户帐户成功登录才能获得。您可以了解有关ID令牌here的更多信息。