Firebase:权限被拒绝 - setValue()

时间:2017-06-28 13:59:16

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

我无法使用setValue()为Firebase数据库设置值。在日志中它返回我的setValue ...权限被拒绝。我检查了我的规则:

{
  "rules": {
    ".read": "auth == null",
    ".write": "auth == null"
  }
}

2 个答案:

答案 0 :(得分:1)

尝试将规则更改为以下内容,然后才能正常工作。

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

根据Frank van Puffelen的评论,您的规则要求用户进行身份验证。

如果您需要更安全的身份验证,可以阅读有关其他选项的身份验证规则here的更多信息

希望这有助于你

答案 1 :(得分:0)

首先,您的用户必须经过身份验证,因为Firebase提供了许多平台,以便用户对其进行身份验证。示例 - Google,Facebook,Twitter等 当用户通过firebase控制台进行身份验证时,他/她可以访问相关的数据库和存储。您还可以使用Firebase匿名身份验证将用户设为访客。

通过执行身份验证,每个用户都可以使用UID,如果您希望为不同的用户使用不同的规则,可以使用该UID通过编写规则来访问它们。

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

默认情况下,您将在数据库规则部分中获得类似的内容: -

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

这只是意味着如果用户通过身份验证,那么只给他们读写访问权限。适用于所有用户。

通过这样做,您可以让所有人以及那些不使用您产品的人都可以访问您的数据库。

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

您可以执行此操作以测试您的产品,但这不是一种安全的方式。