【问题标题】:Can't write to Firebase after changing rules更改规则后无法写入 Firebase
【发布时间】:2016-12-24 06:33:25
【问题描述】:

使用默认规则写入我的实时数据库:

{
"rules": {
".read": "true",
".write": "true"
}
}

我能够成功地将数据保存到数据库中:

我的 Android 应用中的代码如下所示:

  DatabaseReference mDatabaseReference;
  mDatabaseReference = DatabaseReference.getInstance().getReference();
  ...
  mDatabaseReference.child("user").child(user.getUid()).setValue(user);

但为了允许登录用户(电子邮件和密码验证)仅访问他们自己的数据,我发现了这个Firebase - How to write/read data per user after authentication。答案使用了一个我似乎在任何地方都找不到的类Firebase。所以我把规则改成这样:

{
  "rules": {
  "users": {
  "$uid": {
    ".write": "$uid === auth.uid",
    ".read": "$uid === auth.uid"
  }
}
}
}

对我的 java 代码稍作修改:

    DatabaseReference mDatabaseReference, databaseReference;
    ...
    mDatabaseReference = FirebaseDatabase.getInstance().getReference();
    databaseReference = mDatabaseReference.child("user");

    ...
    databaseReference.setValue(user); //user is a POJO

删除数据库中的旧条目并重新运行我的应用程序后,当我尝试保存新用户时没有任何反应。我错过了什么?

【问题讨论】:

    标签: android firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    在您的规则中,将users 更改为user

    Firebase 规则中孩子的姓名

    必须与您的 java 代码中的孩子的名字相匹配。

    为清晰起见添加了图像

    【讨论】:

    • 草率的错误:p
    • 非常马虎,我已经在这上面干了将近 6 个小时了 :)
    • @ojonugwaochalifu 有时会发生。我知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2018-07-22
    • 2020-09-26
    • 1970-01-01
    • 2018-12-29
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多