Nous avons résumé comment gérer le moment où vous souhaitez vous connecter à partir de code Python et de Google Cloud Functions au lieu de Google Cloud Functions pour Firebase.
Il ne dit pas que les informations d'identification seront extraites de Firebase, veuillez donc vous référer à d'autres articles.
Fonctions Google Cloud créées avec python 3.7
firebase-admin 3.2.1
Il semble qu'il n'accepte que main.py et requirements.txt. Je n'ai pas pu lire le fichier serviceAccountKey.json habituel. C'est un moyen courant de s'authentifier en mettant le chemin du fichier dans les informations d'identification.
J'ai donc cherché d'autres méthodes.
Tout d'abord, j'ai vérifié les spécifications de l'API. https://firebase.google.com/docs/reference/admin/python/firebase_admin.credentials
A credential initialized from a JSON certificate keyfile.
Il semble donc que ce soit celui à faire à partir du fichier clé. En passant, du côté javascript, la spécification de l'API décrit comment accepter d'autres fichiers que des fichiers, donc si vous utilisez javascript, veuillez consulter la spécification de l'API.
Je me suis demandé de quel type de traitement il s'agissait, alors je suis allé voir la source. https://github.com/firebase/firebase-admin-python/blob/master/firebase_admin/credentials.py
#Cité à partir de la ligne 81 de l'URL ci-dessus
if isinstance(cert, str):
with open(cert) as json_file:
json_data = json.load(json_file)
elif isinstance(cert, dict):
json_data = cert
Pouvez-vous le faire? Donc, si vous en faites un type dict et que vous le transmettez, il le lira. Vous lisez la source.
Dans mon cas, je publie ce code sur github, donc je définis le contenu de serviceAccountKey.json tel qu'il est dans la variable d'environnement et le charge. Il est normal que les gens l'intègrent dans le code python car il n'est pas publié, mais soyez prudent lorsque vous le manipulez car c'est mauvais s'il fuit.
La partie variable d'environnement utilise python-dotenv, mais elle est omise.
La version extraite du code de création du client est la suivante.
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()
Bibliothèques dépendantes
firebase-admin
google-cloud-firestore
Il y en a deux, alors veuillez les insérer. Seul «firebase-admin» apparaît dans le code, mais les deux sont nécessaires car «firebase-admin» dépend de «google-cloud-firestore».
Google Cloud Functions For Firebase prend désormais en charge python (alors il n'y avait rien de mal)