Wir haben zusammengefasst, wie Sie vorgehen müssen, wenn Sie eine Verbindung über Python-Code und Google Cloud-Funktionen anstelle von Google Cloud-Funktionen für Firebase herstellen möchten.
Es heißt nicht, dass die Anmeldeinformationen aus Firebase abgerufen werden. Weitere Informationen finden Sie in anderen Artikeln.
Mit Cloud 3.7 erstellte Google Cloud-Funktionen
firebase-admin 3.2.1
Es scheint, dass es nur main.py und require.txt akzeptiert. Ich konnte die übliche Datei serviceAccountKey.json nicht lesen. Es ist eine übliche Methode zur Authentifizierung, indem der Dateipfad in Anmeldeinformationen eingetragen wird. Zertifikat.
Also habe ich nach anderen Methoden gesucht.
Zuerst habe ich die API-Spezifikationen überprüft. https://firebase.google.com/docs/reference/admin/python/firebase_admin.credentials
A credential initialized from a JSON certificate keyfile.
Es scheint also das zu sein, was aus der Schlüsseldatei zu tun ist. Auf der Javascript-Seite beschreibt die API-Spezifikation übrigens, wie andere Dateien als Dateien akzeptiert werden. Wenn Sie also Javascript verwenden, lesen Sie bitte die API-Spezifikation.
Ich fragte mich, was für eine Verarbeitung das war, also ging ich zur Quelle. https://github.com/firebase/firebase-admin-python/blob/master/firebase_admin/credentials.py
#Zitiert aus Zeile 81 der obigen URL
if isinstance(cert, str):
with open(cert) as json_file:
json_data = json.load(json_file)
elif isinstance(cert, dict):
json_data = cert
Kannst du es machen? Wenn Sie es also zu einem Diktattyp machen und es übergeben, wird es es lesen. Sie lesen die Quelle.
In meinem Fall veröffentliche ich diesen Code auf github, also setze ich den Inhalt von serviceAccountKey.json so, wie er in der Umgebungsvariablen ist, und lade ihn. Es ist in Ordnung, wenn Leute es in den Python-Code einbetten, da es nicht veröffentlicht wird. Seien Sie jedoch vorsichtig, wenn Sie damit umgehen, da es schlecht ist, wenn es leckt.
Der Teil der Umgebungsvariablen verwendet python-dotenv, wird jedoch weggelassen.
Die aus dem Client-Erstellungscode extrahierte Version lautet wie folgt.
import os
import json
import firebase_admin
from firebase_admin import firestore
from firebase_admin import credentials
cred = credentials.Certificate(json.loads(os.environ.get("FIREBASE_KEY")))
firebase_admin.initialize_app(cred)
db = firestore.client()
Abhängige Bibliotheken
firebase-admin
google-cloud-firestore
Es gibt zwei, also geben Sie sie bitte ein. Im Code wird nur "firebase-admin" angezeigt, aber beide werden benötigt, da "firebase-admin" von "google-cloud-firestore" abhängt.
Google Cloud-Funktionen für Firebase unterstützen jetzt Python (damals war nichts falsch)
Recommended Posts