2017-04-26 1 views
1

Nach Allowing write access only to Cloud Functions for Firebase um Benutzer uid und andere Authentifizierungsinformationen für Datenbank festgelegten Regeln Ihre Funktion wie folgt sein sollte:und festlegen Cloud-Funktionen für die Firebase uid in Datenbank-Regeln verwendet werden

var functions = require('firebase-functions'); 
var admin = require('firebase-admin'); 

exports.foo = functions.database.ref('/bar') 
    .onWrite(event => { 
    var firebaseConfig = functions.config().firebase; 
    firebaseConfig.databaseAuthVariableOverride = { 
    uid: 'some-uid', 
    foo: true, 
    bar: false 
    }; 
    admin.initializeApp(firebaseConfig); 
    ... 
} 

Aber wenn wir Führen Sie diesen Code in unserer Funktion erhalten wir den folgenden Fehler:

Also was ist falsch in diesem Code? Ist das der richtige Weg, um uid zu setzen? Oder gibt es eine (nicht) dokumentierte UID für Funktionen oder eine andere Möglichkeit, eine Regel zu setzen, die nur Schreibvorgänge von Cloud-Funktionen erlaubt?

UPDATE - GELÖST

Wir dieses Problem gelöst wurde, war das Problem, dass die referenzierte Antwort ist (glaube ich) für Google Cloud Funktionen und wir sind eine Wolke Funktion für Firebase zu schreiben.

In Cloud-Funktionen für die Firebase, event.data ist ein DeltaSnapshot Objekt, das ref und adminRef Eigenschaften aufweist. ref hat den gleichen Zugriff wie der Benutzer, der das Ereignis ausgelöst hat, während adminRef unbeschränkte Lese-/Schreib-Privilegien hat. Damit nur die Funktion in einen Pfad schreiben kann, muss die Schreibaktion in Regeln verweigert werden, und die Funktion muss mit adminRef schreiben.

Dies wurde dank der Antwort für Some Firebase security rules apply for admin in Cloud Functions und Google documentation for DeltaSnapshot gelöst gelöst.

Antwort

1

Wir dieses Problem gelöst wurde, war das Problem, dass die referenzierte Antwort ist (glaube ich) für Google Cloud Funktionen und wir eine Firebase Funktion schreiben.

In Firebase Funktionen event.data ist ein DeltaSnapshot Objekt, das ref und adminRef Eigenschaften hat. ref hat den gleichen Zugriff wie der Benutzer, der das Ereignis ausgelöst hat, während adminRef unbeschränkte Lese-/Schreib-Privilegien hat. Damit nur die Funktion in einen Pfad schreiben kann, muss die Schreibaktion in Regeln verweigert werden, und die Funktion muss mit adminRef schreiben.

Dies wurde dank der Antwort für Some Firebase security rules apply for admin in Cloud Functions und Google documentation for DeltaSnapshot gelöst gelöst.

Verwandte Themen