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

1. Introduzione

Rispetto all'API legacy FCM, l'API HTTP v1 di FCM fornisce un modello di autorizzazione più sicuro utilizzando token di accesso di breve durata. I passaggi per generare il token di accesso per l'API FCM v1 sono significativamente diversi dai passaggi per l'API legacy.

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

Maggiori informazioni possono essere trovate su:

Prerequisiti

  • Conoscenza di base dello sviluppo Java e Android

Cosa imparerai

  • Passaggi dettagliati della configurazione lato client e server per abilitare l'invio di notifiche push alla tua app Android utilizzando l'API FCM HTTP v1
  • Generazione di credenziali per l'API HTTP v1 utilizzando gli account di servizio
  • Invio di messaggi di prova tramite l'API HTTP v1

Di cosa avrai bisogno

Ultima versione stabile di Android Studio

Uno dei seguenti dispositivi:

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

2. Progetto Firebase e configurazione dell'app Android

Al termine del lab sul codice, sarai in grado di inviare messaggi alla tua app utilizzando Firebase Cloud Messaging. Prima di farlo, dovrai creare un progetto Firebase. Questo codelab fornisce anche un'app Android contenente codice di esempio da integrare con FCM.

Configurazione del progetto Firebase

Configurazione dell'app Android

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

3. Configura il server dell'app

Ora che la tua app è configurata, dovrai 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 degli argomenti FCM.

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

Maggiori dettagli su come un server app dovrebbe funzionare con FCM possono essere trovati nel documento Il tuo ambiente server e FCM .

4. Ottieni le credenziali v1

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

  1. Configura un account di servizio Firebase per consentire all'SDK Admin Firebase di autorizzare le chiamate alle API FCM. Apri Impostazioni progetto nella console Firebase e seleziona la scheda Account di servizio . Fai clic su Genera nuova chiave privata per scaricare lo snippet di configurazione. Uno screenshot ritagliato che evidenzia 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 nella messaging/ percorso 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. Cambia il metodo principale per aggiungere la seguente riga:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Vai alla directory messaggistica/progetto nel tuo terminale e digita:
./gradlew run -Pmessage=common-message

per stampare il token OAuth2.

Maggiori informazioni sono disponibili in Autorizzare le richieste di invio .

5. Invia un messaggio con l'API REST

Ora sei pronto per inviare un messaggio tramite l'API HTTP v1. Seguire i passaggi seguenti:

  • Per aggiungere il token di accesso a un'intestazione di richiesta HTTP:
  • Aggiungere il token come valore dell'intestazione Autorizzazione nel formato Authorization: Bearer <access_token>
  • Effettua 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 sopra può essere trovato nel codice dell'app Android menzionato nel progetto Firebase e nella configurazione dell'app Android. Per impostazione predefinita è "weather" .

  • Dopo che un messaggio è stato recapitato con successo, dovresti vedere una notifica pop-up sullo schermo, simile all'immagine qui sotto:

54ae84ece22202cd.png

6. Conclusione

Congratulazioni! Hai completato con successo il codelab per:

  • Configura un progetto Firebase
  • Integra Firebase con un'app Android
  • Crea credenziali per l'API HTTP v1 di FCM
  • 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: