Verwenden Sie die FCM HTTP v1 API mit OAuth 2-Zugriffstokens

1. Einleitung

Im Vergleich zur FCM-Legacy-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 Legacy-API.

Dieses Codelab führt Sie durch den Prozess der client- und serverseitigen Einrichtung, um das Senden von Push-Benachrichtigungen an eine Android-App mithilfe der FCM HTTP v1-API zu ermöglichen. Es hebt den wichtigsten Schritt der Generierung von Anmeldeinformationen für die v1-API hervor.

Weitere Informationen finden Sie unter:

Voraussetzungen

  • Grundlegendes Verständnis der Java- und Android-Entwicklung

Was Sie lernen werden

  • Detaillierte Schritte zur client- und serverseitigen Einrichtung, um das Senden von Push-Benachrichtigungen an Ihre Android-App mithilfe der FCM HTTP v1-API zu ermöglichen
  • Generierung von Anmeldeinformationen für die HTTP v1-API mithilfe von Dienstkonten
  • Senden von Testnachrichten über die HTTP v1-API

Was du brauchen wirst

Neueste stabile Version von Android Studio

Eines der folgenden Geräte:

Eine Java-Entwicklungsumgebung oder ein Code-Editor Ihrer Wahl

2. Einrichtung des Firebase-Projekts und der Android-App

Am Ende des Codelabors können Sie mithilfe von Firebase Cloud Messaging Nachrichten an Ihre App senden. Zuvor müssen Sie ein Firebase-Projekt erstellen. Dieses Codelab bietet auch eine Android-App mit Beispielcode zur Integration in FCM.

Einrichtung des Firebase-Projekts

Einrichtung der Android-App

Die in diesem Codelab bereitgestellte Beispiel-Android-App ist bereits in FCM integriert. Nach dem Start registriert es sich 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. Richten Sie den App-Server ein

Nachdem Ihre App nun eingerichtet ist, müssen Sie ein serverseitiges Codebeispiel herunterladen, um mithilfe der FCM v1-API Nachrichten an Ihre App zu senden. Dieser Code lädt die API-Anmeldeinformationen (im nächsten Abschnitt beschrieben), um ein Zugriffstoken zu generieren. Anschließend wird mithilfe von FCM-Themennachrichten eine Nachricht an Ihre App gesendet.

  • Importieren Sie den Starter-Servercode, indem Sie das Github-Projekt herunterladen. Das „Messaging“-Projekt ist ein Gradle-basiertes Java-Projekt mit einer Abhängigkeit vom Firebase-Admin- SDK, das Funktionen zum Senden von Nachrichten bereitstellt.

Weitere Details zur Funktionsweise eines App-Servers mit FCM finden Sie im Dokument Ihre Serverumgebung und FCM .

4. Holen Sie sich v1-Anmeldeinformationen

Die FCM HTTP v1 API verwendet kurzlebige Zugriffstoken gemäß dem OAuth2-Sicherheitsmodell. Im Vergleich zum statischen API-Schlüssel, der in der FCM-Legacy-API verwendet wird, ist das kurzlebige Zugriffstoken weniger anfällig für das Risiko eines Anmeldeinformationslecks. In diesem Abschnitt werden die Schritte zum Erstellen eines Berechtigungsnachweises zum Generieren des Zugriffstokens beschrieben, der 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 die Projekteinstellungen in der Firebase-Konsole und wählen Sie die Registerkarte Dienstkonten aus. Klicken Sie auf „Neuen privaten Schlüssel generieren“ , um das Konfigurations-Snippet herunterzuladen. Ein zugeschnittener Screenshot, der den Admin-SDK-Konfigurationsausschnitt der Dienstkontenkomponente der Projekteinstellungsseite hervorhebt
  2. Benennen Sie im heruntergeladenen Github-Projekt die heruntergeladene Datei in service-account.json um und kopieren Sie sie in den messaging/ -Pfad des Projekts.
  3. Die Methode getAccessToken() (siehe unten) 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 Hauptmethode, indem Sie die folgende Zeile hinzufügen:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Gehen Sie in Ihrem Terminal in das Verzeichnis „messaging/project“ und geben Sie Folgendes ein:
./gradlew run -Pmessage=common-message

um das OAuth2-Token auszudrucken.

Weitere Informationen finden Sie unter Sendeanfragen autorisieren .

5. Senden Sie eine Nachricht mit der REST-API

Jetzt können Sie eine Nachricht über die HTTP v1-API senden. Folgen Sie den unteren Schritten:

  • So fügen Sie das Zugriffstoken einem HTTP-Anforderungsheader hinzu:
  • Fügen Sie das Token als Wert des Authorization-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

Der obige $topic_name ist im Android-App- Code zu finden, der im Firebase-Projekt und im Android-App-Setup erwähnt wird. Standardmäßig ist es "weather" .

  • Nachdem eine Nachricht erfolgreich zugestellt wurde, sollte auf Ihrem Bildschirm eine Benachrichtigung angezeigt werden, ähnlich der Abbildung unten:

54ae84ece22202cd.png

6. Fazit

Glückwunsch! Sie haben das Codelab erfolgreich abgeschlossen, um:

  • Richten Sie ein Firebase-Projekt ein
  • Integrieren Sie Firebase mit einer Android-App
  • Erstellen Sie Anmeldeinformationen für die FCM HTTP v1 API
  • Senden Sie über die FCM HTTP v1 API eine Nachricht an Ihre App

Um die erweiterten Funktionen von FCM zu erkunden, sind die folgenden Referenzen hilfreich: