首页 > 解决方案 > 错误:PERMISSION_DENIED - Angular 7 和 Firebase

问题描述

我知道这是一个常见问题,但我没有在前面的问题中找到我的问题。

我创建了一个新的 firebase 项目,我正在尝试使用它。我创建了 public 以便每个人都可以实际使用:

权限

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

但是当我试图发布一个对象时,我得到了一个错误:

错误:未捕获(承诺中):错误:PERMISSION_DENIED:权限被拒绝错误:PERMISSION_DENIED:权限被拒绝

如果数据库当前是公开的,我怎么可能没有权限?我该如何解决?

我的代码很简单:

目的

export class Coordenate {
  $key: string;
  latitude: number;
  longitude: number;
}

打字稿组件

onAddMarker(event) {
    this.databaseService.postCoordenate(event.coords.lat, event.coords.lng);
    //this.latitude = event.coords.lat;
    //this.longitude = event.coords.lng;
  }

服务

listToStore: AngularFireList<any>;

//Insert a new bet
  postCoordenate(latitude, longitude) {
    this.listToStore = this.db.list("coordenates");
    //Get the value of the photo URL in subscribe
    this.listToStore.push({
      latitude: latitude,
      longitude: longitude
    });
  }

在我的角度项目firebaseConfig中添加到我的environment

标签: angularfirebasefirebase-realtime-databasefirebase-security

解决方案


这是因为您的规则对于 firebase cloud firestore 是公开的,但您正在尝试将数据写入 firebase 实时数据库。选择 firebase 实时数据库并应用以下规则:

{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
   "rules": {
      ".read": true,
      ".write": true
    }
}

推荐阅读