firebase / firebase/firebase-admin-node

Setting $GOOGLE_APPLICATION_CREDENTIALS is causing authentication issue

Abierto
#2,293 1 comentario 2 reacciones 0 asignados Ver en GitHub
api: core
Lenguaje dominante
TypeScript
Estrellas
1.7k
Forks
419
Merge medio
3 d 10 h
PR fusionados (30 d)
16

Descripción

* Operating System version: `macOS 12.4`
* Firebase SDK version: `firebase cli 12.5.2`
* Firebase Product: `admin 11.10.1`
* Node.js version: `v18.16.0`
* NPM version: 9.5.1

#### Steps to reproduce:

When pointing $GOOGLE_APPLICATION_CREDENTIALS to a JSON key and running `firebase emulators:start --only functions`, the console will confirm the key is recognized
```
functions: Your GOOGLE_APPLICATION_CREDENTIALS environment variable points to
.json. Non-emulated services will access production using these credentials. Be careful!
```
but the `firebase-admin` module will throw error
```
FirebaseAppError: 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: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal. Error code: ENOTFOUND".
...
errorInfo: {
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: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal. Error code: ENOTFOUND".'
},

```

When passing in the same key file directly when initializing `firebase-admin`, no such error is produced.

### Relevant Code:
initialization that **WILL** cause the error (with `$GOOGLE_APPLICATION_CREDENTIALS` set to the path to the key JSON file)
``` javascript
admin.initializeApp();

// or
admin.initializeApp({
credential: admin.credential.applicationDefault(),
});
```

initialization that will **NOT** cause the error:
```javascript
const serviceKey = require("path-to-the-key.json");

admin.initializeApp({
credential: admin.credential.cert(payload)
});

```

code snipet to trigger the error
```javascript
async function test() {
const EMAIL = ;
const user = await admin.auth().getUserByEmail(EMAIL);
}
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.