firebase-admin-node icon indicating copy to clipboard operation
firebase-admin-node copied to clipboard

Cannot call `getSignedUrl` when using authorized_user default credentials locally

Open Derrreks opened this issue 1 year ago • 2 comments

[READ] Step 1: Are you in the right place?

  • For issues related to the code in this repository file a Github issue.
  • If the issue pertains to Cloud Firestore, read the instructions in the "Firestore issue" template.
  • For general technical questions, post a question on StackOverflow with the firebase tag.
  • For general Firebase discussion, use the firebase-talk google group.
  • For help troubleshooting your application that does not fall under one of the above categories, reach out to the personalized Firebase support channel.

[REQUIRED] Step 2: Describe your environment

  • Operating System version: macOS 11.7.9
  • Firebase SDK version: firebase-admin 11.11.0
  • Firebase Product: Cloud Storage
  • Node.js version: 18
  • NPM version: 9.9.0

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

What happened? How can we make the problem occur? This could be a description, log/console output, etc.

I'm initializing like:

export const admin = firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.applicationDefault(),
  ...

but when I do that am unable to call Bucket.file().getSignedUrl() with the error:

Error: Cannot sign data without `client_email`

Looking into my local Firebase credentials, I notice there is no client_email there, but there is when using service accounts. I've found some issues around that seem to say this isn't possible with a personal service account (example).

If that's true, is it not possible at all to use my personal service account to work with files? Or is there a workaround that will enable this to work?

Derrreks avatar Dec 14 '23 20:12 Derrreks

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar Dec 14 '23 20:12 google-oss-bot

We have the same issue. It would be great to see a proper solution to this.

As a workaround we made a special cloud function (that is always running in the cloud) that generates signed urls that we call instead of the normal getSignedUrl functions when running in the emulator.

ottob avatar Feb 26 '24 18:02 ottob