Utilizza l'API HTTP v1 di FCM con i token di accesso OAuth 2

1. Introduzione

Rispetto all'API FCM precedente, l'API FCM HTTP v1 fornisce un modello di autorizzazione più sicuro che utilizza token di accesso di breve durata. I passaggi per generare il token di accesso per l'API FCM v1 sono molto diversi da quelli per l'API precedente.

Questo codelab ti guida nella procedura di configurazione lato client e server per attivare l'invio di notifiche push a un'app per Android utilizzando l'API FCM HTTP v1. Evidenzia il passaggio chiave della generazione delle credenziali per l'API v1.

Per ulteriori informazioni, visita:

Prerequisiti

  • Conoscenza di base dello sviluppo Java e Android

Obiettivi didattici

  • Passaggi dettagliati della configurazione lato client e server per attivare l'invio di notifiche push alla tua app per Android utilizzando l'API FCM HTTP v1
  • Generazione delle credenziali per l'API HTTP v1 utilizzando i service account
  • Invio di messaggi di test tramite l'API HTTP v1

Che cosa ti serve

Ultima versione stabile di Android Studio

Uno dei seguenti dispositivi:

Un ambiente di sviluppo Java o un editor di codice a tua scelta

2. Configurazione del progetto Firebase e dell'app per Android

Al termine del codelab, potrai inviare messaggi alla tua app utilizzando Firebase Cloud Messaging. Prima di farlo, devi creare un progetto Firebase. Questo codelab fornisce anche un'app per Android contenente codice di esempio per l'integrazione con FCM.

Configurazione del progetto Firebase

Configurazione dell'app Android

L'app per Android di esempio fornita in questo codelab è già integrata con FCM. Dopo l'avvio, si registra con il server FCM e si abbona a un argomento. Nei passaggi successivi di questo codelab invierai un messaggio all'argomento e la tua app lo riceverà.

3. Configurare il server delle app

Ora che la tua app è configurata, devi scaricare un esempio di codice lato server per inviare messaggi alla tua app utilizzando l'API FCM v1. Questo codice carica le credenziali API (descritte nella sezione successiva) per generare un token di accesso. Quindi, invia un messaggio alla tua app utilizzando la messaggistica per argomenti FCM.

  • Importa il codice del server iniziale scaricando il progetto GitHub. Il progetto "messaging" è un progetto Java basato su Gradle con una dipendenza dall'SDK firebase-admin, che fornisce la funzionalità per inviare messaggi.

Per maggiori dettagli su come un server delle app deve funzionare con FCM, consulta il documento L'ambiente server e FCM.

4. Ottenere le credenziali v1

L'API FCM HTTP v1 utilizza token di accesso di breve durata in base al modello di sicurezza OAuth2. Rispetto alla chiave API statica utilizzata nell'API FCM legacy, il token di accesso di breve durata è meno soggetto al rischio di perdita delle credenziali. Questa sezione descrive in dettaglio i passaggi per creare una credenziale per generare il token di accesso utilizzato per chiamare l'API.

  1. Configura un service account Firebase per consentire all'SDK Firebase Admin di autorizzare le chiamate alle API FCM. Apri Impostazioni progetto nella console Firebase e seleziona la scheda Service account. Fai clic su Genera nuova chiave privata per scaricare lo snippet di configurazione. Uno screenshot ritagliato che mette in evidenza lo snippet di configurazione dell'SDK Admin del componente Account di servizio della pagina Impostazioni progetto
  2. Nel progetto GitHub scaricato, rinomina il file scaricato in service-account.json e copialo nel percorso messaging/ del progetto.
  3. Il metodo getAccessToken() (mostrato di seguito) nella classe Messaging.java genera un token OAuth2 valido per 1 ora.
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();
}
  1. Modifica il metodo principale per aggiungere la seguente riga:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Vai alla directory di messaggistica/ progetto nel terminale e digita:
./gradlew run -Pmessage=common-message

per stampare il token OAuth2.

Per ulteriori informazioni, consulta la sezione Autorizzare le richieste di invio.

5. Inviare un messaggio con l'API REST

Ora puoi inviare un messaggio tramite l'API HTTP v1. Procedi nel seguente modo:

  • Per aggiungere il token di accesso a un'intestazione della richiesta HTTP:
  • Aggiungi il token come valore dell'intestazione Authorization nel formato Authorization: Bearer <access_token>
  • Fai una richiesta HTTP all'API FCM v1 utilizzando 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

Il $topic_name riportato sopra è disponibile nel codice dell'app per Android menzionato nella configurazione del progetto Firebase e dell'app per Android. Il valore predefinito è "weather".

  • Una volta consegnato correttamente un messaggio, sullo schermo dovrebbe essere visualizzata una notifica simile all'immagine riportata di seguito:

54ae84ece22202cd.png

6. Conclusione

Complimenti! Hai completato correttamente il codelab per:

  • Configura un progetto Firebase
  • Integrare Firebase con un'app per Android
  • Crea credenziali per l'API FCM HTTP v1
  • Invia un messaggio alla tua app tramite l'API FCM HTTP v1

Per esplorare le funzionalità avanzate offerte da FCM, sono utili i seguenti riferimenti: