Menggunakan FCM HTTP v1 API dengan token akses OAuth 2

1. Pengantar

Dibandingkan dengan FCM legacy API, FCM HTTP v1 API menyediakan model otorisasi yang lebih aman menggunakan token akses berumur pendek. Langkah-langkah untuk membuat token akses untuk FCM v1 API sangat berbeda dengan langkah-langkah untuk API lama.

Codelab ini akan memandu Anda melalui proses penyiapan sisi klien dan server untuk mengaktifkan pengiriman notifikasi push ke aplikasi Android menggunakan FCM HTTP v1 API. Bagian ini menyoroti langkah utama pembuatan kredensial untuk API v1.

Informasi selengkapnya dapat ditemukan di:

Prasyarat

  • Pemahaman dasar tentang pengembangan Java dan Android

Yang akan Anda pelajari

  • Langkah-langkah mendetail penyiapan sisi klien dan server untuk mengaktifkan pengiriman notifikasi push ke aplikasi Android Anda menggunakan FCM HTTP v1 API
  • Pembuatan kredensial untuk HTTP v1 API menggunakan akun layanan
  • Mengirim pesan pengujian melalui HTTP v1 API

Yang Anda butuhkan

Versi stabil terbaru Android Studio

Salah satu perangkat berikut:

Lingkungan pengembangan Java atau editor kode pilihan Anda

2. Penyiapan project Firebase dan aplikasi Android

Di akhir codelab, Anda akan dapat mengirim pesan ke aplikasi menggunakan Firebase Cloud Messaging. Sebelum melakukannya, Anda harus membuat project Firebase. Codelab ini juga menyediakan aplikasi Android yang berisi contoh kode untuk diintegrasikan dengan FCM.

Penyiapan project Firebase

  • Ikuti "Langkah 1: Buat Project Firebase" untuk membuat project Firebase Anda sendiri untuk codelab ini.

Penyiapan aplikasi Android

Aplikasi Android contoh yang disediakan dalam codelab ini sudah terintegrasi dengan FCM. Setelah dimulai, aplikasi akan mendaftar ke server FCM dan berlangganan topik. Pada langkah-langkah selanjutnya dalam codelab ini, Anda akan mengirim pesan topik ke topik dan aplikasi Anda akan menerimanya.

3. Menyiapkan server aplikasi

Setelah aplikasi disiapkan, Anda harus mendownload contoh kode sisi server untuk mengirim pesan ke aplikasi menggunakan FCM v1 API. Kode ini memuat kredensial API (dijelaskan di bagian berikutnya) untuk membuat token akses. Kemudian, pesan akan dikirim ke aplikasi Anda menggunakan pesan topik FCM.

  • Impor kode server awal dengan mendownload project GitHub. Project "messaging" adalah project Java berbasis Gradle dengan dependensi pada SDK firebase-admin, yang menyediakan fungsi untuk mengirim pesan.

Detail selengkapnya tentang cara kerja server aplikasi dengan FCM dapat ditemukan dalam dokumen Lingkungan server dan FCM Anda.

4. Mendapatkan kredensial v1

FCM HTTP v1 API menggunakan token akses berumur pendek sesuai dengan model keamanan OAuth2. Dibandingkan dengan kunci API statis yang digunakan di FCM API lama, token akses jangka pendek lebih rentan terhadap risiko kebocoran kredensial. Bagian ini menjelaskan langkah-langkah untuk membuat kredensial guna membuat token akses yang digunakan dalam memanggil API.

  1. Siapkan akun layanan Firebase agar Firebase Admin SDK dapat mengizinkan panggilan ke FCM API. Buka Project Settings di Firebase console, lalu pilih tab Service accounts. Klik Generate new private key untuk mendownload cuplikan konfigurasi. Screenshot yang dipangkas yang menandai cuplikan konfigurasi Admin SDK komponen Akun layanan di halaman Setelan project
  2. Di project GitHub yang didownload, ganti nama file yang didownload menjadi service-account.json dan salin ke jalur messaging/ project.
  3. Metode getAccessToken() (ditunjukkan di bawah) di class Messaging.java akan membuat token OAuth2 yang valid selama 1 jam.
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. Ubah metode utama untuk menambahkan baris berikut:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Buka direktori project/ messaging di terminal Anda, lalu ketik:
./gradlew run -Pmessage=common-message

untuk mencetak token OAuth2.

Informasi selengkapnya dapat ditemukan di Mengizinkan permintaan kirim.

5. Mengirim pesan dengan REST API

Sekarang Anda siap mengirim pesan melalui HTTP v1 API. Ikuti langkah berikut:

  • Untuk menambahkan token akses ke header permintaan HTTP:
  • Tambahkan token sebagai nilai header Authorization dalam format Authorization: Bearer <access_token>
  • Buat permintaan HTTP ke FCM v1 API menggunakan 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

$topic_name di atas dapat ditemukan dalam kode aplikasi Android yang disebutkan dalam penyiapan project Firebase dan aplikasi Android. Secara default, nilainya adalah "weather".

  • Setelah pesan berhasil dikirim, Anda akan melihat notifikasi muncul di layar, seperti gambar di bawah:

54ae84ece22202cd.png

6. Kesimpulan

Selamat! Anda telah berhasil menyelesaikan codelab untuk:

  • Menyiapkan project Firebase
  • Mengintegrasikan Firebase dengan aplikasi Android
  • Membuat kredensial untuk FCM HTTP v1 API
  • Mengirim pesan ke aplikasi Anda melalui FCM HTTP v1 API

Untuk mempelajari fitur lanjutan yang ditawarkan FCM, referensi berikut akan berguna: