Menggunakan FCM HTTP v1 API dengan token akses OAuth 2

1. Pengantar

Dibandingkan dengan API lama FCM, 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 memandu Anda melalui proses penyiapan sisi server dan klien untuk mengaktifkan pengiriman notifikasi push ke aplikasi Android menggunakan FCM HTTP v1 API. Halaman 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 untuk penyiapan sisi klien dan server guna mengaktifkan pengiriman notifikasi push ke aplikasi Android Anda menggunakan HTTP v1 API FCM
  • 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 kode contoh 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, modul akan mendaftar ke server FCM dan berlangganan topik. Pada langkah-langkah selanjutnya di codelab ini, Anda akan mengirim pesan topik ke topik dan aplikasi Anda akan menerimanya.

3. Menyiapkan server aplikasi

Setelah aplikasi siap, 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, SDK ini akan mengirim pesan 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 API lama FCM, token akses jangka pendek kurang rentan terhadap risiko kebocoran kredensial. Bagian ini menjelaskan langkah-langkah pembuatan kredensial untuk menghasilkan token akses yang digunakan dalam memanggil API.

  1. Siapkan akun layanan Firebase agar Firebase Admin SDK dapat memberikan otorisasi panggilan ke FCM API. Buka Project Settings di Firebase console dan pilih tab Service accounts. Klik Buat kunci pribadi baru untuk mendownload cuplikan konfigurasi. Screenshot yang dipangkas yang menyoroti cuplikan konfigurasi Admin SDK dari 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() (ditampilkan di bawah) di class Messaging.java menghasilkan 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 pesan/project di terminal, lalu ketik:
./gradlew run -Pmessage=common-message

untuk mencetak token OAuth2.

Informasi selengkapnya dapat ditemukan di Mengizinkan permintaan pengiriman.

5. Mengirim pesan dengan REST API

Sekarang Anda siap untuk 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 di kode aplikasi Android yang disebutkan dalam project Firebase dan penyiapan aplikasi Android. Secara default, nilainya adalah "weather".

  • Setelah pesan berhasil dikirim, Anda akan melihat notifikasi muncul di layar, mirip dengan 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 menjelajahi fitur lanjutan yang ditawarkan FCM, referensi berikut akan berguna: