Firebase权限被拒绝

时间:2017-02-12 13:38:37

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

当我尝试删除数据库中的某些数据时,我遇到了一些问题。

实际上,我有一个节点,我的应用程序中使用了所有用户名。

就像这样:

"usernames": {
        ".indexOn": ["username"],
        "$username": {
            ".read": "true",
            ".write": "(!data.exists() && auth != null) || (auth.token.name.toLowerCase() == data.val())"
        }

我想要一些像这样的东西:

  • 当用户创建新帐户时,他可以检查用户名是否可用(read = true)
  • 当此用户名可用时,他可以使用匿名身份验证将其添加到数据库(!data.exists() && auth != null
  • 当用户想要更改其用户名时,他可以删除他的上一个用户名(auth.token.name.toLowerCase() == data.val()

两个第一点工作正常,但第三点不起作用,我得到一个DatabaseError:权限被拒绝(我也尝试root.val()而不是data.val())。

代码:

mFirebaseInstance.getmDatabase()
  .child("usernames")
  .child(ol‌dUsername.toLowerCas‌​e())
  .removeValue().a‌​ddOnCompleteListener‌​(new OnCompleteListener<Void>() { 
     @Override public void onComplete(@NonNull Task<Void> task) { 
        System.out.println("pass here!"); 
     } 
  });

我认为我的规则不正确,但我不知道如何改变它。用户只能在用户名时删除用户名。

你知道怎么做吗?

0 个答案:

没有答案