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 API FCM HTTP v1 zapewnia bezpieczniejszy model autoryzacji, który wykorzystuje krótkotrwałe tokeny dostępu. Czynności związane z generowaniem tokena dostępu do interfejsu FCM API w wersji 1 znacznie różnią się od czynności związanych ze starszym interfejsem API.

W tym laboratorium dowiesz się, jak skonfigurować klienta i serwer, aby umożliwić wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu FCM HTTP v1 API. Wyróżnia kluczowy krok generowania danych logowania dla interfejsu API w wersji 1.

Więcej informacji znajdziesz na tych stronach:

Wymagania wstępne

  • Podstawowa znajomość języka Java i tworzenia aplikacji na Androida

Czego się nauczysz

  • Szczegółowe instrukcje konfiguracji po stronie klienta i serwera, które umożliwiają wysyłanie powiadomień push do aplikacji na Androida za pomocą interfejsu FCM HTTP w wersji 1
  • Generowanie danych logowania do interfejsu HTTP API w wersji 1 za pomocą kont usługi
  • Wysyłanie wiadomości testowych za pomocą interfejsu HTTP API w wersji 1

Czego potrzebujesz

Najnowsza stabilna wersja Android Studio

Jedno z tych urządzeń:

środowisko programistyczne Java lub edytor kodu,

2. Konfigurowanie projektu Firebase i aplikacji na Androida

Po ukończeniu tego laboratorium będziesz mieć możliwość wysyłania wiadomości do aplikacji za pomocą Firebase Cloud Messaging. Aby to zrobić, musisz najpierw utworzyć projekt Firebase. W tym laboratorium znajdziesz też aplikację na Androida zawierającą przykładowy kod do integracji z FCM.

Konfigurowanie projektu Firebase

  • Aby utworzyć własny projekt Firebase na potrzeby tego kursu, wykonaj czynności opisane w sekcji „Krok 1. Utwórz projekt Firebase”.

Konfigurowanie aplikacji na Androida

Przykładowa aplikacja na Androida udostępniona w tym ćwiczeniu z programowania jest już zintegrowana z FCM. Po uruchomieniu zarejestruje się na serwerze FCM i zasubskrybuje temat. W dalszych krokach tego laboratorium wyślesz do tematu wiadomość, a Twoja aplikacja ją otrzyma.

3. Konfigurowanie serwera aplikacji

Po skonfigurowaniu aplikacji musisz pobrać przykładowy kod po stronie serwera, aby wysyłać do niej wiadomości za pomocą interfejsu FCM w wersji 1. Ten kod wczytuje dane logowania interfejsu API (opisane w następnej sekcji), aby wygenerować token dostępu. Następnie wysyła wiadomość do aplikacji za pomocą wiadomości tematycznych FCM.

  • Zaimportuj początkowy kod serwera, pobierając projekt GitHub. Projekt „messaging” to projekt Java oparty na Gradle, który jest zależny od pakietu SDK firebase-admin. Ten pakiet zapewnia funkcje wysyłania wiadomości.

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

4. Uzyskiwanie danych logowania do wersji 1

Interfejs FCM HTTP v1 API używa krótkotrwałych tokenów dostępu zgodnie z modelem zabezpieczeń OAuth2. W porównaniu ze statycznym kluczem API używanym w starszej wersji interfejsu FCM API krótkotrwały token dostępu jest mniej podatny na ryzyko wycieku danych logowania. W tej sekcji znajdziesz szczegółowe instrukcje tworzenia danych logowania do generowania tokena dostępu używanego do wywoływania interfejsu API.

  1. Skonfiguruj konto usługi Firebase, aby pakiet Firebase Admin SDK mógł autoryzować wywołania interfejsów FCM API. Otwórz Ustawienia projektu w konsoli Firebase i wybierz kartę Konta usługi. Aby pobrać fragment konfiguracji, kliknij Wygeneruj nowy klucz prywatny. Przycięty zrzut ekranu przedstawiający fragment konfiguracji pakietu Admin SDK w sekcji Konta usługi na stronie Ustawienia projektu
  2. W pobranym projekcie GitHub zmień nazwę pobranego pliku na service-account.json i skopiuj go do ścieżki messaging/ w projekcie.
  3. Metoda getAccessToken() (pokazana poniżej) w klasie Messaging.java generuje token OAuth2, który jest 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ń główną metodę, aby dodać ten wiersz:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. W terminalu przejdź do katalogu projektu lub katalogu przesyłania wiadomości 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

Możesz teraz wysłać wiadomość za pomocą interfejsu HTTP API 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>.
  • Wyślij żądanie HTTP do interfejsu FCM w wersji 1 za pomocą polecenia 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

Symbol $topic_name powyżej znajdziesz w kodzie aplikacji na Androida wspomnianym w konfiguracji projektu Firebase i aplikacji na Androida. Domyślnie jest to "weather".

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

54ae84ece22202cd.png

6. Podsumowanie

Gratulacje! Po ukończeniu tego ćwiczenia:

  • Konfigurowanie projektu Firebase
  • Integracja Firebase z aplikacją na Androida
  • Tworzenie danych logowania do interfejsu HTTP API FCM w wersji 1
  • Wysyłanie wiadomości do aplikacji za pomocą interfejsu FCM HTTP v1 API

Aby poznać zaawansowane funkcje FCM, zapoznaj się z tymi materiałami: