Integrate Firebase
You can integrate Firebase project into your Python app in two ways.
User based Authentication
For use with only user based authentication we can create the following configuration:
# Import Firebase REST API library
import firebase
# Firebase configuration
config = {
"apiKey": "apiKey",
"authDomain": "projectId.firebaseapp.com",
"databaseURL": "https://databaseName.firebaseio.com",
"projectId": "projectId",
"storageBucket": "projectId.appspot.com",
"messagingSenderId": "messagingSenderId",
"appId": "appId"
}
# Instantiates a Firebase app
firebaseApp = firebase.initialize_app(config)
Admin based Authentication
We can optionally send service account credential to our app that will allow our server to authenticate with Firebase as an admin and disregard any security rules.
Service Account Secret File
The following example uses the service account secrets file path as the value for serviceAccount key.
# Import Firebase REST API library
import firebase
# Firebase configuration with service account secret file path
config = {
"apiKey": "apiKey",
"authDomain": "projectId.firebaseapp.com",
"databaseURL": "https://databaseName.firebaseio.com",
"projectId": "projectId",
"storageBucket": "projectId.appspot.com",
"messagingSenderId": "messagingSenderId",
"appId": "appId"
"serviceAccount": "path/to/serviceAccountCredentials.json"
}
firebaseApp = firebase.initialize_app(config)
Service Account Secret Dict
The following example uses the service account secrets dict as the value for serviceAccount key.
# Import Firebase REST API library
import firebase
# Firebase configuration
config = {
"apiKey": "apiKey",
"authDomain": "projectId.firebaseapp.com",
"databaseURL": "https://databaseName.firebaseio.com",
"projectId": "projectId",
"storageBucket": "projectId.appspot.com",
"messagingSenderId": "messagingSenderId",
"appId": "appId"
}
# Service Account Secret dict
service_account_key = {
"type": "service_account",
"project_id": "project_id",
"private_key_id": "private_key_id",
"private_key": "private_key",
"client_email": "client_email",
"client_id": "client_id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "client_x509_cert_url"
}
config['serviceAccount'] = service_account_key
firebaseApp = firebase.initialize_app(config)
Note
Adding a service account will authenticate as an admin by default for all database queries, check out the Authentication documentation for how to authenticate users.
Use Services
A Firebase app can use multiple Firebase services.
firebaseApp.auth()
- Authentication
firebaseApp.database()
- Database
firebaseApp.storage()
- Storage
Check out the documentation for each service for further details.