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

1. Wstęp

W porównaniu ze starszym interfejsem API FCM, interfejs API FCM HTTP v1 zapewnia bezpieczniejszy model autoryzacji przy użyciu krótkotrwałych tokenów dostępu. Kroki generowania tokena dostępu dla interfejsu API FCM v1 znacznie różnią się od kroków dla starszego interfejsu API.

To ćwiczenie z programowania przeprowadzi Cię przez proces konfiguracji po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień wypychanych do aplikacji na Androida przy użyciu interfejsu API FCM HTTP v1. Podkreśla kluczowy etap generowania poświadczeń dla interfejsu API w wersji 1.

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

Warunki wstępne

  • Podstawowa znajomość programowania w języku Java i Android

Czego się dowiesz

  • Szczegółowe kroki konfiguracji po stronie klienta i serwera, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu API FCM HTTP v1
  • Generowanie danych uwierzytelniających dla interfejsu API HTTP v1 przy użyciu kont usług
  • Wysyłanie wiadomości testowych poprzez API HTTP v1

Co będziesz potrzebował

Najnowsza stabilna wersja Android Studio

Jedno z następujących urządzeń:

Wybrane środowisko programistyczne Java lub edytor kodu

2. Konfiguracja projektu Firebase i aplikacji na Androida

Po zakończeniu zajęć z kodowania będziesz mógł wysyłać wiadomości do swojej aplikacji za pomocą Firebase Cloud Messaging. Zanim to zrobisz, musisz utworzyć projekt Firebase. To ćwiczenie z programowania udostępnia także aplikację na Androida zawierającą przykładowy kod do integracji z FCM.

Konfiguracja projektu Firebase

  • Wykonaj „Krok 1: Utwórz projekt Firebase ”, aby utworzyć własny projekt Firebase na potrzeby tych zajęć z programowania.

Konfiguracja aplikacji na Androida

Przykładowa aplikacja na Androida dostarczona w tym laboratorium z programowania jest już zintegrowana z FCM. Po uruchomieniu zarejestruje się na serwerze FCM i zasubskrybuje temat. W późniejszych etapach tego ćwiczenia z kodowania wyślesz wiadomość tematyczną do tematu, a Twoja aplikacja ją otrzyma.

3. Skonfiguruj serwer aplikacji

Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera, który umożliwi wysyłanie wiadomości do aplikacji przy użyciu interfejsu API FCM v1. Ten kod ładuje poświadczenia API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do Twojej aplikacji za pomocą wiadomości tematycznych FCM.

  • Zaimportuj kod serwera startowego, pobierając projekt Github . Projekt „wiadomości” to projekt Java oparty na Gradle i zależny od pakietu SDK firebase-admin , który zapewnia funkcjonalność wysyłania wiadomości.

Więcej szczegółów na temat tego, jak serwer aplikacji powinien współpracować z FCM, można znaleźć w dokumencie Twoje środowisko serwerowe i FCM .

4. Uzyskaj dane uwierzytelniające v1

Interfejs API FCM HTTP v1 wykorzystuje krótkotrwałe tokeny dostępu zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem API używanym w starszym interfejsie API FCM, krótkotrwały token dostępu jest mniej podatny na ryzyko wycieku danych uwierzytelniających. W tej sekcji szczegółowo opisano kroki tworzenia poświadczeń służących do generowania tokenu dostępu używanego podczas wywoływania interfejsu API.

  1. Skonfiguruj konto usługi Firebase, aby pakiet Firebase Admin SDK autoryzował wywołania interfejsów API FCM. Otwórz Ustawienia projektu w konsoli Firebase i wybierz zakładkę Konta usług . Kliknij Wygeneruj nowy klucz prywatny , aby pobrać fragment konfiguracji. Przycięty zrzut ekranu przedstawiający fragment konfiguracji pakietu Admin SDK komponentu Konta usług na stronie Ustawienia projektu
  2. W pobranym projekcie Github zmień nazwę pobranego pliku na service-account.json i skopiuj go do messaging/ ścieżki projektu.
  3. Metoda getAccessToken() (pokazana poniżej) w klasie Messaging.java generuje token OAuth2 ważny przez 1 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 następujący wiersz:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Przejdź do katalogu messaging/project w swoim terminalu i wpisz:
./gradlew run -Pmessage=common-message

aby wydrukować token OAuth2.

Więcej informacji znajdziesz w Autoryzuj żądania wysłania .

5. Wyślij wiadomość za pomocą REST API

Teraz możesz wysłać wiadomość za pośrednictwem interfejsu API HTTP v1. Wykonaj poniższe kroki:

  • Aby dodać token dostępu do nagłówka żądania HTTP:
  • Dodaj token jako wartość nagłówka Authorization w formacie Authorization: Bearer <access_token>
  • Wykonaj żądanie HTTP do interfejsu API FCM v1 za pomocą 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

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

  • Po pomyślnym dostarczeniu wiadomości na ekranie powinno pojawić się powiadomienie podobne do poniższego obrazka:

54ae84ece22202cd.png

6. Wniosek

Gratulacje! Pomyślnie ukończyłeś ćwiczenia z kodowania, aby:

  • Skonfiguruj projekt Firebase
  • Zintegruj Firebase z aplikacją na Androida
  • Utwórz poświadczenia dla interfejsu API FCM HTTP v1
  • Wyślij wiadomość do swojej aplikacji za pośrednictwem interfejsu API FCM HTTP v1

Aby zapoznać się z zaawansowanymi funkcjami oferowanymi przez FCM, przydatne są następujące odniesienia: