Skip to content

Commit a96edc8

Browse files
committed
feat: Support passing google.auth typed credentials in initialize_app()
1 parent 2a8170f commit a96edc8

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

firebase_admin/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import os
1919
import threading
2020

21+
from google.auth.credentials import Credentials as GoogleAuthCredentials
2122
from google.auth.exceptions import DefaultCredentialsError
2223
from firebase_admin import credentials
2324
from firebase_admin.__about__ import __version__
@@ -208,6 +209,8 @@ def __init__(self, name, credential, options):
208209
'non-empty string.'.format(name))
209210
self._name = name
210211

212+
if isinstance(credential, GoogleAuthCredentials):
213+
credential = credentials._ExternalCredentials(credential)
211214
if not isinstance(credential, credentials.Base):
212215
raise ValueError('Illegal Firebase credential provided. App must be initialized '
213216
'with a valid credential instance.')

firebase_admin/credentials.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import pathlib
1919

2020
import google.auth
21+
from google.auth.credentials import Credentials as GoogleAuthCredentials
2122
from google.auth.transport import requests
2223
from google.oauth2 import credentials
2324
from google.oauth2 import service_account
@@ -58,6 +59,19 @@ def get_credential(self):
5859
"""Returns the Google credential instance used for authentication."""
5960
raise NotImplementedError
6061

62+
class _ExternalCredentials(Base):
63+
"""A wrapper for google.auth.credentials.Credentials typed credential instances"""
64+
65+
def __init__(self, credential: GoogleAuthCredentials):
66+
super(_ExternalCredentials, self).__init__()
67+
self._g_credential = credential
68+
69+
def get_credential(self):
70+
"""Returns the underlying Google Credential
71+
72+
Returns:
73+
google.auth.credentials.Credentials: A Google Auth credential instance."""
74+
return self._g_credential
6175

6276
class Certificate(Base):
6377
"""A credential initialized from a JSON certificate keyfile."""

0 commit comments

Comments
 (0)