1. Introducción
En comparación con la API heredada de FCM, la API de HTTP v1 de FCM proporciona un modelo de autorización más seguro con tokens de acceso de corta duración. Los pasos para generar el token de acceso de la API de FCM v1 son muy diferentes de los pasos de la API heredada.
Este codelab te guiará en el proceso de configuración del cliente y del servidor para habilitar el envío de notificaciones push a una app para Android con la API de FCM HTTP v1. Aquí se destaca el paso clave de la generación de credenciales para la API v1.
Puedes obtener más información en:
Requisitos previos
- Conocimientos básicos sobre el desarrollo en Java y Android
Qué aprenderás
- Pasos detallados de la configuración del cliente y del servidor para habilitar el envío de notificaciones push a tu app para Android con la API de HTTP v1 de FCM
- Generación de credenciales para la API de HTTP v1 con cuentas de servicio
- Envía mensajes de prueba a través de la API de HTTP v1
Requisitos
La versión estable más reciente de Android Studio
Uno de los siguientes dispositivos:
- Un dispositivo Android físico conectado a tu computadora
- Un emulador de Android (consulta Cómo ejecutar apps en Android Emulator)
Un entorno de desarrollo de Java o un editor de código de tu elección
2. Configuración del proyecto de Firebase y la app para Android
Al final del codelab, podrás enviar mensajes a tu app con Firebase Cloud Messaging. Antes de hacerlo, deberás crear un proyecto de Firebase. Este codelab también proporciona una app para Android que contiene código de muestra para integrarse a FCM.
Configuración del proyecto de Firebase
- Sigue las instrucciones del "Paso 1: Crea un proyecto de Firebase" para crear tu propio proyecto de Firebase para este codelab.
Configuración de la app para Android
La app de ejemplo para Android que se proporciona en este codelab ya está integrada en FCM. Después de iniciarse, se registrará en el servidor de FCM y se suscribirá a un tema. En los pasos posteriores de este codelab, enviarás un mensaje de tema al tema y tu app lo recibirá.
- Descarga el ejemplo de la guía de inicio rápido de Firebase para Android.
- Importa el proyecto en https://github.com/firebase/quickstart-android/tree/master/messaging a Android Studio.
- Registra la app en Firebase console. El nombre de la app es
com.google.firebase.quickstart.fcm
. Registra esta app en tu proyecto de Firebase. Para ello, sigue los pasos que se indican en el “Paso 2: Registra tu app en Firebase”. sección. - Sigue la parte 1 de "Paso 3: Agrega un archivo de configuración de Firebase" para descargar
google-services.json
y agregarlo a tu proyecto. Compila y ejecuta el proyecto.
3. Configura el servidor de apps
Ahora que tu app está configurada, deberás descargar una muestra de código del servidor para enviar mensajes a tu app con la API de FCM v1. Este código carga las credenciales de la API (que se describen en la siguiente sección) para generar un token de acceso. Luego, envía un mensaje a tu app a través de la mensajería por temas de FCM.
- Para importar el código del servidor de partida, descarga el proyecto de GitHub. El término “mensajería” El proyecto es un proyecto de Java basado en Gradle que depende del SDK de firebase-admin, que proporciona funcionalidad para enviar mensajes.
Para obtener más información sobre cómo debe funcionar un servidor de apps con FCM, consulta el documento Tu entorno de servidor y FCM.
4. Obtén credenciales de la v1
La API de HTTP v1 de FCM usa tokens de acceso de corta duración según el modelo de seguridad OAuth2. En comparación con la clave de API estática que se usa en la API heredada de FCM, el token de acceso de corta duración es menos propenso al riesgo de filtración de credenciales. En esta sección, se detallan los pasos que debes seguir para crear una credencial para generar el token de acceso que se usa para llamar a la API.
- Configura una cuenta de servicio de Firebase para permitir que el SDK de Firebase Admin autorice llamadas a las API de FCM. Abre la Configuración del proyecto en Firebase console y selecciona la pestaña Cuentas de servicio. Haz clic en Generate new private key para descargar el fragmento de configuración.
- En el proyecto de GitHub descargado, cambia el nombre del archivo descargado a
service-account.json
y cópialo en la ruta de accesomessaging/
del proyecto. - El método
getAccessToken()
(que se muestra a continuación) en la claseMessaging.java
genera un token de OAuth2 válido por 1 hora.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Cambia el método principal por agregar la siguiente línea:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Ve al directorio de mensajería o del proyecto en la terminal y escribe lo siguiente:
./gradlew run -Pmessage=common-message
para imprimir el token de OAuth2.
Puedes encontrar más información en Autorizar solicitudes de envío.
5. Envía un mensaje con la API de REST
Ya estás listo para enviar un mensaje a través de la API de HTTP v1. Siga los pasos que se indican a continuación:
- Para agregar el token de acceso a un encabezado de solicitud HTTP:
- Agrega el token como el valor del encabezado de autorización en el formato
Authorization: Bearer <access_token>
. - Realiza una solicitud HTTP a la API de FCM v1 con curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Puedes encontrar el $topic_name
anterior en el código de la app para Android que se menciona en el proyecto de Firebase y en la configuración de la app para Android. De forma predeterminada, es "weather"
.
- Después de que se entregue un mensaje correctamente, deberías ver una notificación emergente en la pantalla, similar a la siguiente imagen:
6. Conclusión
¡Felicitaciones! Completaste correctamente el codelab para hacer lo siguiente:
- Configura un proyecto de Firebase:
- Integra Firebase en una app para Android
- Crea credenciales para la API de HTTP v1 de FCM
- Envía un mensaje a tu aplicación a través de la API de FCM HTTP v1
Las siguientes referencias son útiles para explorar las funciones avanzadas que ofrece FCM: