Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase:权限被拒绝-setValue()_Android_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Android Firebase:权限被拒绝-setValue()

Android Firebase:权限被拒绝-setValue(),android,firebase,firebase-realtime-database,firebase-security,Android,Firebase,Firebase Realtime Database,Firebase Security,我无法使用setValue()为我的Firebase数据库设置值。在日志中,它返回我在。。。拒绝许可。我检查了我的规则: { "rules": { ".read": "auth == null", ".write": "auth == null" } } 尝试将您的规则更改为以下内容,它将起作用 { "rules": { ".read": true, ".write": true } } 根据Frank van Puffelen的评论,您的规则

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

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

尝试将您的规则更改为以下内容,它将起作用

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
根据Frank van Puffelen的评论,您的规则要求用户未经验证

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


希望这对您有所帮助

首先,您的用户必须通过身份验证,因为Firebase提供了许多平台,可以使用它对用户进行身份验证。例如,谷歌、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
  }
}

您可以出于测试产品的目的这样做,但这不是一种安全的方法。

您当前的规则要求用户未经身份验证。您更可能希望使用
“.write”:true
,它允许任何用户编写,无论他们是否经过身份验证。谢谢,它很有效。然而,在我能够使用规则从相同的数据库数据中获取数据之前。我的问题是为什么现在需要改变规则?是否取决于用户注册??因为现在我正在将用户注册到授权?请您回答上述权限,您的意思是任何人都可以从该数据库进行读写,而无需任何身份验证(无论他们是否经过身份验证)。使用以前的代码,您的意思是不能验证。也就是说,经过身份验证的用户不能做任何事情,除非您提供信息。它将来会非常有用