1

Ich bin ein Neuling in Firebase.Firebase-Berechtigung verweigert

Wie komme ich durch diese unten Regel?

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

Ich habe versucht, die Regel unten zu ändern,

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

aber es gibt einen Fehler von

mismatched input '{' expecting {'function', 'service', 'syntax'} 

Unten ist die DB-Struktur.

db structure

Derzeit ist dies mein Code (die Erlaubnis verweigert hält Zurückkehren): würde geschätzt

// [START initialize_database_ref] 
    mDatabase = FirebaseDatabase.getInstance().reference 
    // [END initialize_database_ref] 

    val result = HashMap<String, Any>() 
    result.put("timestamp", getCurrentTime()) 
    result.put("user_id", USER_ID) 
    result.put("x_position", -1) 
    result.put("y_position", -1) 

    mDatabase!!.ref.child("raw data").child("Z9QD79lDzP7MpD6feWeJ").setValue(result).addOnFailureListener(object : OnFailureListener { 
     override fun onFailure(@NonNull e: Exception) { 
      Log.d("firebase", e.localizedMessage) 
     } 
    }) 

Jede Hilfe! Danke :)

Antwort

1

Ich war in der Lage, das Problem zu lösen, indem Sie von Cloud Firestore zu Realtime Database wechseln und dann die Regel ändern. (Nachdem ich dies geändert haben, war es nicht mehr Fehler zeigt!) enter image description here

1

Für andere mit diesem Problem zu kämpfen, die richtige Lösung, um die false in

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

Um true während des Tests zu ändern ist. Vergessen Sie nicht, zusätzliche Sicherheit hinzuzufügen, wenn Sie Ihr Projekt in Betrieb nehmen!

+0

Ich habe auch versucht das, aber noch wurde die Erlaubnis verweigert. Obwohl ich das Problem auf andere Weise gelöst habe, bin ich mir nicht sicher, warum dafür :( – user3415167

0

Sie sollten Ihr Angular NgModule und Komponenten einchecken, wenn Sie "Realtime Database" oder "Cloud Firestore" verwenden. Siehe diferences mit "angularfire2":

ECHTZEIT DATABASE

@NgModule({ 
... 
imports: [ 
    AngularFireDatabaseModule, 
    ... 
], 
providers: [ 
AngularFireDatabase, 
... 
] 
}) 


@Component({...}) 
export class FirestoreComponent{ 
    constructor(private realtimeDb:AngularFireDatabase, ...) { 
     this.locations = realtimeDb.list('locations').valueChanges(); 
    } 
... 
} 

CLOUD FIRESTORE

@NgModule({ 
    ... 
    imports: [ 
     AngularFirestoreModule, 
     ... 
    ] 
}) 

@Component({...}) 
export class FirestoreComponent{ 
    constructor(private firestore:AngularFirestore, ...) { 
     this.locations = firestore.collection('locations').valueChanges(); 
    } 
... 
}