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.

In diesem Codelab wird beschrieben, wie Sie Client und Server einrichten, um Push-Benachrichtigungen mithilfe der FCM HTTP v1 API an eine Android-App zu senden. Darin wird der wichtige Schritt der Anmeldedatengenerierung für die V1-API hervorgehoben.

Weitere Informationen finden Sie unter:

Vorbereitung

  • Grundlegende Kenntnisse der Java- und Android-Entwicklung

Lerninhalte

  • Detaillierte Schritte für die Einrichtung auf Client- und Serverseite, um Push-Benachrichtigungen mit der FCM HTTP v1 API an Ihre Android-App zu senden
  • 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 Nachrichten mit Firebase Cloud Messaging an Ihre App senden. Dazu müssen Sie zuerst ein Firebase-Projekt erstellen. In diesem Codelab finden Sie auch eine Android-App mit Beispielcode für die Integration in FCM.

Firebase-Projekt einrichten

Android-App einrichten

Die in diesem Codelab bereitgestellte Android-Beispiel-App ist bereits in FCM integriert. Nach dem Start registriert sich die App beim FCM-Server und abonniert ein Thema. In den späteren Schritten dieses Codelabs senden Sie eine Themennachricht 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 mit der 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 über FCM-Themennachrichten an Ihre 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 zur Funktionsweise eines App-Servers mit FCM finden Sie im Dokument 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 kurzlebige Zugriffstoken weniger anfällig für das Risiko eines Anmeldedatendiebstahls. In diesem Abschnitt wird beschrieben, wie Sie eine Anmeldedaten erstellen, um das Zugriffstoken zu generieren, das zum 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, auf dem das Admin SDK-Konfigurationssnippet der Dienstkontokomponente 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. Mit der Methode getAccessToken() (siehe unten) in der Klasse Messaging.java wird ein OAuth2-Token generiert, das 1 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 Hauptmethode, um die folgende Zeile hinzuzufügen:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Wechseln Sie in Ihrem Terminal zum Messaging- oder Projektverzeichnis und geben Sie Folgendes ein:
./gradlew run -Pmessage=common-message

um das OAuth2-Token auszugeben.

Weitere Informationen finden Sie unter Sendeanfragen autorisieren.

5. Nachricht 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 Authorization-Headers im Format Authorization: Bearer <access_token> hinzu.
  • Senden 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 wird. Der Standardwert ist "weather".

  • Wenn eine Nachricht erfolgreich zugestellt wurde, sollte auf dem Bildschirm eine Benachrichtigung wie im Bild unten angezeigt werden:

54ae84ece22202cd.png

6. Fazit

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

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

Die folgenden Referenzen können hilfreich sein, wenn Sie sich mit den erweiterten Funktionen von FCM vertraut machen möchten: