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

1. Giriş

FCM HTTP v1 API, FCM eski API'sine kıyasla kısa ömürlü erişim jetonları kullanarak daha güvenli bir yetkilendirme modeli sunar. FCM v1 API için erişim jetonu oluşturma adımları, eski API'nin adımlarından önemli ölçüde farklıdır.

Bu codelab'de, FCM HTTP v1 API'sini kullanarak bir Android uygulamasına push bildirimleri göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulum süreci açıklanmaktadır. v1 API için kimlik bilgisi oluşturma işleminin temel adımını vurgular.

Daha fazla bilgiye şu adresten ulaşabilirsiniz:

Ön koşullar

  • Java ve Android geliştirme hakkında temel bilgiler

Neler öğreneceksiniz?

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

Gerekenler

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

Aşağıdaki cihazlardan biri:

Seçtiğiniz bir Java geliştirme ortamı veya kod düzenleyici

2. Firebase projesi ve Android uygulaması kurulumu

Bu 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 sağlanmaktadır.

Firebase projesi kurulumu

  • Bu codelab için kendi Firebase projenizi oluşturmak üzere "1. Adım: Firebase projesi oluşturun" bölümündeki talimatları uygulayın.

Android uygulama kurulumu

Bu codelab'de sağlanan örnek Android uygulaması FCM ile entegre edilmiştir. Başladıktan sonra FCM sunucusuna kaydolur ve bir konuya abone olur. Bu codelab'in sonraki adımlarında konuya bir konu mesajı gönderecek ve uygulamanız bu mesajı alacak.

3. Uygulama sunucusunu ayarlama

Uygulamanız ayarlandığına göre, 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 (sonraki bölümde açıklanmıştır) yükler. Ardından, FCM konu mesajlaşmasını kullanarak uygulamanıza bir mesaj gönderir.

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

Bir uygulama sunucusunun FCM ile nasıl çalışması gerektiği hakkında daha fazla bilgiyi Sunucu ortamınız ve FCM başlıklı dokümanda bulabilirsiniz.

4. v1 kimlik bilgilerini alma

FCM HTTP v1 API, OAuth2 güvenlik modeline göre kısa ömürlü erişim jetonları kullanır. FCM eski API'sinde kullanılan statik API anahtarıyla karşılaştırıldığında, kısa ömürlü erişim jetonunun kimlik bilgisi sızıntısı riski daha düşüktür. Bu bölümde, API'yi çağırmada kullanılan erişim jetonunu oluşturmak için kimlik bilgisi oluşturma 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 bir 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 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 aşağıdaki satırı ekleyecek şekilde değiştirin:
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ırmak için.

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

5. REST API ile mesaj gönderme

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

  • Erişim jetonunu bir HTTP isteği üstbilgisine eklemek için:
  • Jetonu, Authorization: Bearer <access_token> biçiminde yetkilendirme üstbilgisinin 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 "weather"'dır.

  • Bir mesaj başarıyla teslim edildikten sonra ekranınızda aşağıdaki resme benzer bir bildirim gösterilir:

54ae84ece22202cd.png

6. Sonuç

Tebrikler! Aşağıdaki işlemleri yapmak için codelab'i başarıyla tamamladınız:

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

FCM'nin sunduğu gelişmiş özellikleri keşfetmek için aşağıdaki referanslardan yararlanabilirsiniz: