From d870ed44220224ff15fdfe0fb1d0f5d3890718fb Mon Sep 17 00:00:00 2001 From: amalej Date: Tue, 16 Dec 2025 06:55:50 +0800 Subject: [PATCH] fix getDownloadURL permission error when connected to emulator --- src/storage/index.ts | 9 ++++++++- src/storage/utils.ts | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/storage/index.ts b/src/storage/index.ts index 2638192690..797e4beea0 100644 --- a/src/storage/index.ts +++ b/src/storage/index.ts @@ -75,7 +75,14 @@ export async function getDownloadURL(file: File): Promise { const endpoint = (process.env.STORAGE_EMULATOR_HOST || 'https://firebasestorage.googleapis.com') + '/v0'; - const { downloadTokens } = await getFirebaseMetadata(endpoint, file); + const headers = process.env.STORAGE_EMULATOR_HOST + ? { Authorization: 'Bearer owner' } + : undefined; + const { downloadTokens } = await getFirebaseMetadata( + endpoint, + file, + headers + ); if (!downloadTokens) { throw new FirebaseError({ code: 'storage/no-download-token', diff --git a/src/storage/utils.ts b/src/storage/utils.ts index bb6711521b..7c885b49c9 100644 --- a/src/storage/utils.ts +++ b/src/storage/utils.ts @@ -19,7 +19,8 @@ export interface FirebaseMetadata { export function getFirebaseMetadata( endpoint: string, - file: File + file: File, + headers?: { [key: string]: string } ): Promise { const uri = `${endpoint}/b/${file.bucket.name}/o/${encodeURIComponent( file.name @@ -30,6 +31,7 @@ export function getFirebaseMetadata( { method: 'GET', uri, + headers, }, (err, body) => { if (err) {