firebase / firebase/firebase-admin-node

When using application default credentials, `access_token` is present but `expires_in` is missing from OAuth response, causing "Unexpected response while fetching access token"

Open
#2,291 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
1.7k
Forks
419
Avg merge
3d 10h
Merged PRs (30d)
16

Description

* Operating System version: Mac
* Firebase SDK version: 11.5.0
* Firebase Product: Admin SDK (Auth)
* Node.js version: 18.17.1
* NPM version: 9.6.7

### [REQUIRED] Step 3: Describe the problem

I'm getting the following error from the Admin SDK when using application default credentials to authenticate:

```
{
code: 'app/invalid-credential',
message: 'Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error:
"Error fetching access token: Unexpected response while fetching access token:
{"access_token":"ya29.","token_type":"Bearer"}".'
}
```
_(line breaks added for legibility)_

Which seems to indicate a valid access token _is_ being provisioned (there's a token in there that starts with `ya29.`), but the library isn't reading it correctly.

It seems like the library is [expecting an `expires_in` key to appear as well](https://github.com/firebase/firebase-admin-node/blob/master/src/app/credential-internal.ts#L523) but that key is missing in the response it's getting from Google's auth APIs.

#### Steps to reproduce:

1. Use application default credentials (`GOOGLE_APPLICATION_CREDENTIALS=sa.json` and `credential: applicationDefault()`) with the Node Admin SDK
2. Grab `sa.json` from your project's Service Accounts tab in the Firebase console.
3. Try to use Admin SDK APIs such as `getAuth`, `auth.verifySessionCookie`, etc. (my code is [here](https://github.com/romannurik/express-firebase-auth-gate/blob/main/src/make-gated-app.ts) if needed).
4. Observe [in some cases?] you see the error cited above.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.