FCM HTTP v1 API mit OAuth 2-Zugriffstokens verwenden

1. Einführung

Im Vergleich zur alten FCM API bietet die FCM HTTP v1 API ein sichereres Autorisierungsmodell mit kurzlebigen Zugriffstokens. Die Schritte zum Generieren des Zugriffstokens für die FCM v1 API unterscheiden sich erheblich von den Schritten für die alte API.

Dieses Codelab führt Sie durch die clientseitige und serverseitige Einrichtung, um das Senden von Push-Benachrichtigungen an eine Android-App mithilfe der FCM HTTP v1 API zu aktivieren. Der wichtigste Schritt bei der Generierung von Anmeldedaten für die v1 API wird hervorgehoben.

Weitere Informationen finden Sie hier:

Vorbereitung

  • Grundlegende Kenntnisse der Java- und Android-Entwicklung

Lerninhalte

  • Detaillierte Schritte zur clientseitigen und serverseitigen Einrichtung, um das Senden von Push-Benachrichtigungen an deine Android-App über die FCM HTTP v1 API zu aktivieren
  • Anmeldedaten für die HTTP v1 API mit Dienstkonten generieren
  • Testnachrichten über die HTTP v1 API senden

Voraussetzungen

Neueste stabile Version von Android Studio

Eines der folgenden Geräte:

Eine Java-Entwicklungsumgebung oder ein Code-Editor Ihrer Wahl

2. Firebase-Projekt und Android-App einrichten

Am Ende des Codelabs können Sie mit Firebase Cloud Messaging Nachrichten an Ihre App senden. Dazu müssen Sie zuerst ein Firebase-Projekt erstellen. Dieses Codelab bietet auch eine Android-App mit Beispielcode für die Integration in FCM.

Firebase-Projekt einrichten

Android-App einrichten

Die in diesem Codelab bereitgestellte Beispiel-Android-App ist bereits in FCM integriert. Nach dem Start registriert er sich beim FCM-Server und abonniert ein Thema. In den späteren Schritten dieses Codelabs senden Sie eine Nachrichten an das Thema und Ihre App empfängt sie.

3. App-Server einrichten

Nachdem Sie Ihre App eingerichtet haben, müssen Sie ein serverseitiges Codebeispiel herunterladen, um Nachrichten über die FCM v1 API an Ihre App zu senden. Mit diesem Code werden die API-Anmeldedaten (im nächsten Abschnitt beschrieben) geladen, um ein Zugriffstoken zu generieren. Anschließend wird eine Nachricht mit FCM-Themennachrichten an deine App gesendet.

  • Importieren Sie den Startservercode, indem Sie das GitHub-Projekt herunterladen. Das Projekt „messaging“ ist ein Gradle-basiertes Java-Projekt mit einer Abhängigkeit vom firebase-admin SDK, das Funktionen zum Senden von Nachrichten bietet.

Weitere Informationen dazu, wie ein Anwendungsserver mit FCM funktionieren sollte, finden Sie im Dokument Ihre Serverumgebung und FCM.

4. V1-Anmeldedaten abrufen

Die FCM HTTP v1 API verwendet kurzlebige Zugriffstokens gemäß dem OAuth2-Sicherheitsmodell. Im Vergleich zum statischen API-Schlüssel, der in der alten FCM API verwendet wird, ist das Risiko eines Datenlecks bei kurzlebigen Zugriffstokens geringer. In diesem Abschnitt wird beschrieben, wie Sie Anmeldedaten zum Generieren des Zugriffstokens erstellen, das beim Aufrufen der API verwendet wird.

  1. Richten Sie ein Firebase-Dienstkonto ein, damit das Firebase Admin SDK Aufrufe an FCM APIs autorisieren kann. Öffnen Sie in der Firebase Console die Projekteinstellungen und wählen Sie den Tab Dienstkonten aus. Klicken Sie auf Neuen privaten Schlüssel generieren, um das Konfigurations-Snippet herunterzuladen. Ein zugeschnittener Screenshot, in dem das Admin SDK-Konfigurations-Snippet der Komponente „Dienstkonten“ auf der Seite „Projekteinstellungen“ zu sehen ist
  2. Benennen Sie die heruntergeladene Datei im heruntergeladenen GitHub-Projekt in service-account.json um und kopieren Sie sie in den Pfad messaging/ des Projekts.
  3. Die Methode getAccessToken() (unten dargestellt) in der Klasse Messaging.java generiert ein OAuth2-Token, das eine Stunde lang gültig ist.
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. Ändern Sie die Methode "main" in die folgende Zeile:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Wechseln Sie in Ihrem Terminal zum Projektverzeichnis "messaging/" und geben Sie Folgendes ein:
./gradlew run -Pmessage=common-message

aus, um das OAuth2-Token auszudrucken.

Weitere Informationen finden Sie unter Sendeanfragen autorisieren.

5. Nachrichten mit der REST API senden

Jetzt können Sie eine Nachricht über die HTTP v1 API senden. Führen Sie folgende Schritte aus:

  • So fügen Sie das Zugriffstoken einem HTTP-Anfrageheader hinzu:
  • Fügen Sie das Token als Wert des Autorisierungs-Headers im Format Authorization: Bearer <access_token> hinzu.
  • Stellen Sie mit curl eine HTTP-Anfrage an die FCM v1 API:
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

Die $topic_name oben finden Sie im Code der Android-App, der in der Einrichtung des Firebase-Projekts und der Android-App erwähnt wurde. Der Standardwert ist "weather".

  • Nachdem eine Nachricht erfolgreich zugestellt wurde, sollte eine Pop-up-Benachrichtigung auf Ihrem Bildschirm angezeigt werden, ähnlich wie im folgenden Bild:

54ae84ece22202cd.png

6. Fazit

Glückwunsch! Sie haben das Codelab erfolgreich abgeschlossen und dabei Folgendes gelernt:

  • Firebase-Projekt einrichten
  • Firebase in eine Android-App einbinden
  • Anmeldedaten für die FCM HTTP v1 API erstellen
  • Nachrichten über die FCM HTTP v1 API an Ihre App senden

Weitere Informationen zu den erweiterten Funktionen von FCM finden Sie in den folgenden Artikeln: