diff --git a/src/lib/server/firebase.ts b/src/lib/server/firebase.ts index 9adf527..795d241 100644 --- a/src/lib/server/firebase.ts +++ b/src/lib/server/firebase.ts @@ -1,11 +1,22 @@ import { env } from '$env/dynamic/private'; -import { cert, getApps, initializeApp } from 'firebase-admin/app'; +import { cert, getApps, initializeApp, type ServiceAccount } from 'firebase-admin/app'; import { getAuth } from 'firebase-admin/auth'; import { getFirestore } from 'firebase-admin/firestore'; if (!getApps().length) { + let serviceAccountPathOrObject: string | ServiceAccount; + try { + const tmp = JSON.parse(env.GOOGLE_APPLICATION_CREDENTIALS); + if (typeof tmp === 'object') { + serviceAccountPathOrObject = tmp; + } else { + throw new Error(); + } + } catch { + serviceAccountPathOrObject = env.GOOGLE_APPLICATION_CREDENTIALS; + } initializeApp({ - credential: cert(env.GOOGLE_APPLICATION_CREDENTIALS) + credential: cert(serviceAccountPathOrObject) }); }