slyte / firebase_config.py
dashgaming's picture
Upload folder using huggingface_hub
1017fb2 verified
Raw History Blame Contribute Delete
1.69 kB
import os
import streamlit as st
import firebase_admin
from firebase_admin import credentials, firestore
def initialize_firebase():
"""
Initializes Firebase Admin SDK and returns Firestore client.
Ensures initialization happens only once.
"""
# Check if Firebase is already initialized
if not firebase_admin._apps:
try:
# 1. Try to load from Streamlit Secrets (for Cloud Deployment)
has_secrets = False
try:
if "firebase_key" in st.secrets:
has_secrets = True
except Exception:
pass
if has_secrets:
# Convert AttrDict to regular dict if needed
key_dict = dict(st.secrets["firebase_key"])
cred = credentials.Certificate(key_dict)
firebase_admin.initialize_app(cred)
# 2. Try to load from local file (for Local Development)
else:
current_dir = os.path.dirname(os.path.abspath(__file__))
key_path = os.path.join(current_dir, "serviceAccountKey.json")
if os.path.exists(key_path):
cred = credentials.Certificate(key_path)
firebase_admin.initialize_app(cred)
else:
st.error("Firebase credentials not found (checked secrets and local file).")
st.stop()
except Exception as e:
st.error(f"Failed to initialize Firebase: {e}")
st.stop()
# Return Firestore client instance
return firestore.client()