Android Firebase setValue() 权限被拒绝

2024-03-19

这是在 firebase 上定义规则的方式:

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

我已经成功地使用 setValue() 在我的注册活动中写入了新的用户信息,如下所示,并且每次我都没有遇到身份验证问题时,还使用 ​​push().setValue() 添加了新注释。新用户直接写到http://数据库/用户/ http://DB/users/同时评论也加得很深。

这是一个代码片段,我的代码命中日志:无法保存数据。每次。

AuthData authData = newRef.getAuth();

    if (authData != null) {
        Log.v(LOG_TAG, "Auth as " + authData.getUid());
        Map<String, Object> newEntry = new HashMap<String, Object>();
        newEntry.put("Name", name);
        newEntry.put("Description", desc);
        newEntry.put("DueDate", date);
        newEntry.put("Status", 0);

        newRef.setValue(newEntry, new Firebase.CompletionListener() {
            @Override
            public void onComplete(FirebaseError firebaseError, Firebase firebase) {
                if (firebaseError != null) {
                    Log.v(LOG_TAG, "Data could not be saved. " + firebaseError.getMessage()); //Hits here every time.
                } else {
                    Log.v(LOG_TAG, "Data saved successfully. Finishing activity...");
                    finish();
                }
            }
        });
        ;
    }
    else{
        Log.v(LOG_TAG, "No authdata");
    }

希望我提供了足够的信息,我猜问题出在安全/规则中,但任何方向/指导将不胜感激。谢谢。


我在这一点上太纠结了,这对我有帮助。

首先,有两种类型的用户可以从 firebase 访问数据库

  1. 授权
  2. 未经授权

默认情况下,它设置为未授权,但他们也没有任何权限read nor write,所以最初如果您尝试执行任何操作,您会得到权限被拒绝错误.

如何更改它以满足您的要求?

解决方案:

在数据库部分下,转到规则选项卡。 URL 将与您的项目名称类似。
https://console.firebase.google.com/project/project-name/database/rules https://console.firebase.google.com/project/project-name/database/rules

你会在这里看到类似这样的东西:

{
  "rules": {
    ".read": "auth != null", //non-authorised users CANT read
    ".write": "auth != null" //non-authorised users CANT write
  }
}

只需将其更改为

{
  "rules": {
    ".read": "auth == null", //even non-authorised users CAN read
    ".write": "auth == null" //even non-authorised users CAN write
  }
}

根据您的要求更改此设置。快乐编码:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Firebase setValue() 权限被拒绝 的相关文章

随机推荐