# FireBase RealTime Database
El BackEndBase permite utilizar la API de FireBase para enviar información a la RealTime Database (opens new window)
Nota
No se utiliza ningún cliente nativo, sólo los servicios Rest proporcionados por FireBase, más información por aquí (opens new window).
# Funciones disponibles
El módulo realtime, implementado en el BackEndBase contiene las siguientes funciones:
# get_token_realtime
La función get_token_realtime
obtiene un nuevo token de sesión de Firebase.
def get_token_realtime():
...
El Token generado, utiliza Ámbitos de OAuth 2.0 para las API de Google (opens new window) y get_token_realtime
especifica los permisos adicionales de OAuth 2.0 que se solicitan al proveedor de autenticación.
# define los scope a los que tendrá acceso el token de sesión
scopes = [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/firebase.database"
]
Se utiliza por defecto la cuenta de servicio (opens new window) asociada al proyecto.
Este token es almacenado en caché, bajo la clave token_realtime.
# Un ejemplo
from app.ext.firebase.realtime import get_token_realtime
from loguru import logger
...
access_token = get_token_realtime()
if access_token is None:
logger.warning("realtime_api invalid access token: {}", access_token)
return None
# do stuff
Nota
Esta función es usada internamente por realtime_api,
para el envío de las notificaciones.
# realtime_api
La función realtime_api
espera dos parametros, notification_name
y data
notification_name:
El identificador del mensaje, apoyáte en funciones comogenerate_salt,
y/ogenerate_uuid,
para crearlos de forma dinámica.data:
La información del mensaje, usualmente es unobjeto
tipojson
con la información a enviar.
def realtime_api(notification_name=None, data=None):
...
# Un ejemplo
from app.ext.firebase.realtime import realtime_api
from app.ext.security import generate_salt
...
message_id = generate_salt(20)
message_data = {
"title": "nuevo mensaje usando la RealTime",
"body": "favor no responder",
"created_at": "20200520153750"
}
result = realtime_api(message_id, message_data)
print("realtime_api result:", result)
El resultado del ejemplo anterior:
{
"name": "-MBp616pcPdhqnZwNDka"
}
Nota
Por defecto la información se envía a un nodo llamado messages
de la RealTime Database.
# Más información
Para mas información consulte:
- API de administración de Firebase (opens new window)
- Configuración de la API REST (opens new window)
- Estructura tu base de datos (opens new window)
- Cómo guardar datos (opens new window)
- La sección de issues (opens new window) del BackEndBase