Używanie interfejsu FCM HTTP v1 API z tokenami dostępu OAuth 2

1. Wprowadzenie

W porównaniu ze starszą wersją interfejsu API FCM interfejs FCM HTTP v1 API zapewnia bezpieczniejszy model autoryzacji przy użyciu tokenów dostępu o krótkim czasie ważności. Etapy generowania tokena dostępu dla interfejsu API FCM w wersji 1 znacznie się różnią od tych w starszym interfejsie API.

Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak skonfigurować po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu API FCM HTTP v1. Wyróżniona jest tu kluczowy etap generowania danych logowania dla interfejsu API w wersji 1.

Więcej informacji można znaleźć na stronie:

Wymagania wstępne

  • Podstawowa wiedza o programowaniu w języku Java i Androidzie

Czego się nauczysz

  • Szczegółowe instrukcje konfiguracji po stronie klienta i serwera, dzięki którym możliwe będzie wysyłanie powiadomień push do aplikacji na Androida przy użyciu interfejsu API FCM HTTP w wersji 1.
  • Generowanie danych uwierzytelniających dla interfejsu API HTTP w wersji 1 za pomocą kont usługi
  • Wysyłanie wiadomości testowych przez interfejs API HTTP w wersji 1

Czego potrzebujesz

Najnowsza stabilna wersja Android Studio

Jedno z tych urządzeń:

dowolne środowisko programistyczne Java lub edytor kodu;

2. Konfiguracja projektu Firebase i aplikacji na Androida

Po zakończeniu modułu dotyczącego programowania będziesz mieć możliwość wysyłania wiadomości do swojej aplikacji przy użyciu Komunikacji w chmurze Firebase (FCM). Zanim to zrobisz, musisz utworzyć projekt Firebase. W ramach tego ćwiczenia w Codelabs dostępna jest też aplikacja na Androida zawierająca przykładowy kod do integracji z FCM.

Konfigurowanie projektu Firebase

  • Wykonaj czynności opisane w sekcji „Krok 1. Utwórz projekt Firebase”. aby utworzyć własny projekt Firebase na potrzeby tego ćwiczenia z programowania.

Konfiguracja aplikacji na Androida

Przykładowa aplikacja na Androida dostępna w tym ćwiczeniu z programowania jest już zintegrowana z FCM. Po rozpoczęciu zostanie ono zarejestrowane na serwerze FCM i zasubskrybuje temat. W kolejnych krokach tego ćwiczenia w Codelabs wyślesz wiadomość z tematu do tematu, a aplikacja ją otrzyma.

3. Konfigurowanie serwera aplikacji

Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera służący do wysyłania wiadomości do aplikacji przy użyciu interfejsu API FCM w wersji 1. Wczytuje on dane logowania interfejsu API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do Twojej aplikacji za pomocą wiadomości tematycznych w FCM.

  • Zaimportuj kod serwera startowego, pobierając projekt GitHub. Komunikat projekt to oparty na Gradle projekt Java, który korzysta z pakietu SDK firebase-admin z funkcjami wysyłania wiadomości.

Więcej informacji o tym, jak serwer aplikacji powinien współpracować z FCM, znajdziesz w dokumencie Twoje środowisko serwera i FCM.

4. Pobierz dane logowania w wersji 1

Interfejs FCM HTTP v1 API korzysta z tokenów dostępu o krótkim czasie ważności zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem interfejsu API używanym w starszym interfejsie API FCM token dostępu przez krótki czas jest mniej podatny na ryzyko ujawnienia danych logowania. Ta sekcja zawiera szczegółowe instrukcje tworzenia danych logowania służących do generowania tokena dostępu używanego do wywoływania interfejsu API.

  1. Skonfiguruj konto usługi Firebase, aby zezwolić pakietowi SDK Firebase Admin na autoryzowanie wywołań interfejsów API FCM. W konsoli Firebase otwórz Ustawienia projektu i wybierz kartę Konta usługi. Aby pobrać fragment kodu konfiguracji, kliknij Wygeneruj nowy klucz prywatny. Przycięty zrzut ekranu z wyróżnionymi fragmentem konfiguracji pakietu Admin SDK w komponencie kont usługi na stronie ustawień projektu
  2. W pobranym projekcie GitHub zmień nazwę pobranego pliku na service-account.json i skopiuj go do ścieżki messaging/ projektu.
  3. Metoda getAccessToken() (pokazana poniżej) w klasie Messaging.java generuje token OAuth2 ważny przez godzinę.
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. Zmień metodę główną, dodając ten wiersz:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Przejdź do katalogu komunikatów/ projektów w terminalu i wpisz:
./gradlew run -Pmessage=common-message

aby wydrukować token OAuth2.

Więcej informacji znajdziesz w artykule Autoryzowanie żądań wysyłania.

5. Wysyłanie wiadomości za pomocą interfejsu API REST

Teraz możesz wysłać wiadomość przez interfejs API HTTP w wersji 1. Wykonaj te czynności:

  • Aby dodać token dostępu do nagłówka żądania HTTP:
  • Dodaj token jako wartość nagłówka autoryzacji w formacie Authorization: Bearer <access_token>
  • Za pomocą polecenia curl wyślij żądanie HTTP do interfejsu API FCM w wersji 1:
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

Powyższy obiekt $topic_name można znaleźć w kodzie aplikacji na Androida wspomnianym w projekcie Firebase i w konfiguracji aplikacji na Androida. Domyślnie jest to "weather".

  • Po dostarczeniu wiadomości na ekranie powinno pojawić się powiadomienie podobne do tego na obrazie poniżej:

54ae84ece22202cd.png

6. Podsumowanie

Gratulacje! Udało Ci się ukończyć ćwiczenia z programowania, aby:

  • Konfigurowanie projektu Firebase
  • Integracja Firebase z aplikacją na Androida
  • Tworzenie danych logowania do interfejsu API FCM HTTP w wersji 1
  • Wyślij wiadomość do aplikacji, używając interfejsu FCM HTTP v1 API.

Jeśli chcesz poznać zaawansowane funkcje FCM, zapoznaj się z tymi materiałami: