OAuth 2 erişim jetonları ile FCM HTTP v1 API'yi kullanma

1. Giriş

Eski FCM API ile karşılaştırıldığında FCM HTTP v1 API, kısa ömürlü erişim jetonları kullanarak daha güvenli bir yetkilendirme modeli sağlar. FCM v1 API için erişim jetonu oluşturma adımları, eski API'ye yönelik adımlardan önemli ölçüde farklıdır.

Bu codelab'de, FCM HTTP v1 API kullanılarak Android uygulamalarına push bildirimleri göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulum süreci açıklanmaktadır. Bu makalede, v1 API için kimlik bilgisi oluşturmanın önemli adımı vurgulanmaktadır.

Daha fazla bilgiyi şu adreste bulabilirsiniz:

Ön koşullar

  • Java ve Android'de geliştirme ile ilgili temel bilgiler

Neler öğreneceksiniz?

  • FCM HTTP v1 API'yi kullanarak Android uygulamanıza push bildirimleri göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulumunun ayrıntılı adımları
  • Hizmet hesaplarını kullanarak HTTP v1 API için kimlik bilgisi oluşturma
  • HTTP v1 API üzerinden test mesajları gönderme

Gerekenler

Android Studio'nun en son kararlı sürümü

Aşağıdaki cihazlardan biri:

Tercih ettiğiniz bir Java geliştirme ortamı veya kod düzenleyici

2. Firebase projesi ve Android uygulaması kurulumu

Kod laboratuvarının sonunda, Firebase Cloud Messaging'i kullanarak uygulamanıza mesaj gönderebileceksiniz. Bunu yapmadan önce bir Firebase projesi oluşturmanız gerekir. Bu codelab'de, FCM ile entegrasyon için örnek kod içeren bir Android uygulaması da sunulmaktadır.

Firebase projesi kurulumu

Android uygulaması kurulumu

Bu codelab'de sağlanan örnek Android uygulaması zaten FCM ile entegredir. Başlatıldıktan sonra FCM sunucusuna kaydedilir ve bir konuya abone olur. Bu codelab'in sonraki adımlarında, konuya bir konu mesajı gönderecek ve uygulamanız bu mesajı alacaktır.

3. Uygulama sunucusunu ayarlama

Uygulamanız kurulduğuna göre artık FCM v1 API'yi kullanarak uygulamanıza mesaj göndermek için sunucu tarafı kod örneği indirmeniz gerekir. Bu kod, erişim jetonu oluşturmak için API kimlik bilgilerini yükler (sonraki bölümde açıklanmıştır). Ardından, FCM konu mesajlaşmasını kullanarak uygulamanıza bir mesaj gönderir.

  • GitHub projesini indirerek başlangıç sunucu kodunu içe aktarın. "Mesajlaşma" projesi, mesaj gönderme işlevi sağlayan firebase-admin SDK'sına bağımlı olan Gradle tabanlı bir Java projesidir.

Bir uygulama sunucusunun FCM ile nasıl çalışması gerektiğiyle ilgili daha fazla bilgiyi Sunucu ortamınız ve FCM dokümanında bulabilirsiniz.

4. v1 kimlik bilgisi alın

FCM HTTP v1 API, OAuth2 güvenlik modeline göre kısa ömürlü erişim jetonları kullanır. Kısa ömürlü erişim jetonu, FCM eski API'de kullanılan statik API anahtarıyla karşılaştırıldığında kimlik bilgileri sızıntısı riskine daha az açıktır. Bu bölümde, API'yi çağırmak için kullanılan erişim jetonunu oluşturmak amacıyla kimlik bilgisi oluşturmaya yönelik adımlar ayrıntılı olarak açıklanmaktadır.

  1. Firebase Admin SDK'nın, FCM API'lerine yapılan çağrıları yetkilendirmesine izin vermek için Firebase hizmet hesabı oluşturun. Firebase konsolunda Proje Ayarları'nı açın ve Hizmet hesapları sekmesini seçin. Yapılandırma snippet'ini indirmek için Yeni özel anahtar oluştur'u tıklayın. Proje ayarları sayfasının Hizmet hesapları bileşeninin Yönetici SDK'sı yapılandırma snippet'ini vurgulayan kırpılmış ekran görüntüsü
  2. İndirilen GitHub projesinde, indirilen dosyayı service-account.json olarak yeniden adlandırın ve projenin messaging/ yoluna kopyalayın.
  3. Messaging.java sınıfındaki getAccessToken() yöntemi (aşağıda gösterilmiştir), 1 saat boyunca geçerli olan bir OAuth2 jetonu oluşturur.
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. Ana yöntemi değiştirerek aşağıdaki satırı ekleyin:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Terminalinizde mesajlaşma/ proje dizinine gidin ve şunu yazın:
./gradlew run -Pmessage=common-message

OAuth2 jetonunu yazdırın.

Daha fazla bilgiyi Gönderme isteklerini yetkilendirme başlıklı makalede bulabilirsiniz.

5. REST API ile mesaj gönderme

Artık HTTP v1 API üzerinden mesaj göndermeye hazırsınız. Aşağıdaki adımları izleyin:

  • Erişim jetonunu bir HTTP istek başlığına eklemek için:
  • Jetonu Authorization: Bearer <access_token> biçimindeki Yetkilendirme başlığının değeri olarak ekleyin.
  • curl kullanarak FCM v1 API'ye bir HTTP isteği gönderin:
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

Yukarıdaki $topic_name, Firebase projesi ve Android uygulaması kurulumunda belirtilen Android uygulaması kodunda bulunabilir. Varsayılan olarak bu değer "weather"'tır.

  • Bir ileti başarıyla teslim edildikten sonra, ekranınızda aşağıdaki resme benzer bir bildirim pop-up penceresi görürsünüz:

54ae84ece22202cd.png

6. Sonuç

Tebrikler! Şu işlemler için codelab'i başarıyla tamamladınız:

  • Firebase projesi oluşturun
  • Firebase'i Android uygulamasıyla entegre etme
  • FCM HTTP v1 API için kimlik bilgileri oluşturma
  • FCM HTTP v1 API aracılığıyla uygulamanıza mesaj gönderin

FCM'nin sunduğu ileri seviye özellikleri keşfetmek için aşağıdaki referansları inceleyebilirsiniz: