OAuth 2 erişim jetonlarıyla FCM HTTP v1 API'sini kullanın

1. Giriş

FCM eski API'si ile karşılaştırıldığında FCM HTTP v1 API'si, kısa ömürlü erişim belirteçlerini kullanarak daha güvenli bir yetkilendirme modeli sağlar. FCM v1 API'si için erişim belirteci oluşturma adımları, eski API adımlarından önemli ölçüde farklıdır.

Bu codelab, FCM HTTP v1 API'sini kullanarak bir Android uygulamasına anında bildirim göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulum sürecinde size yol gösterir. v1 API'si için kimlik bilgisi oluşturmanın önemli adımını vurgular.

Daha fazla bilgiyi şu adreste bulabilirsiniz:

Önkoşullar

  • Java ve Android geliştirmenin temel anlayışı

Ne öğreneceksin

  • FCM HTTP v1 API'sini kullanarak Android uygulamanıza anında bildirim 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'si aracılığıyla test mesajları gönderme

İhtiyacınız olan şey

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üzenleyicisi

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 gerekecek. Bu codelab aynı zamanda FCM ile entegre edilecek örnek kod içeren bir Android uygulaması da sağlar.

Firebase proje kurulumu

Android uygulaması kurulumu

Bu codelab'de sağlanan örnek Android uygulaması zaten FCM ile entegredir. Başladıktan sonra FCM sunucusuna kaydolacak ve bir konuya abone olacaktır. Bu codelab'in sonraki adımlarında konuya bir konu mesajı göndereceksiniz ve uygulamanız bu mesajı alacak.

3. Uygulama sunucusunu kurun

Artık uygulamanız ayarlandığına göre, FCM v1 API'sini kullanarak uygulamanıza mesaj göndermek için sunucu tarafı kod örneğini indirmeniz gerekecek. Bu kod, bir erişim belirteci oluşturmak için API kimlik bilgilerini (sonraki bölümde açıklanmaktadır) yükler. Daha sonra FCM konu mesajlaşmasını kullanarak uygulamanıza bir mesaj gönderir.

  • Github projesini indirerek başlangıç ​​sunucusu kodunu içe aktarın. "Mesajlaşma" projesi, mesaj gönderme işlevselliği 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ğine ilişkin daha fazla ayrıntıyı Sunucu ortamınız ve FCM belgesinde bulabilirsiniz.

4. v1 kimlik bilgilerini alın

FCM HTTP v1 API'si, OAuth2 güvenlik modeline göre kısa ömürlü erişim belirteçleri kullanır. FCM eski API'sinde kullanılan statik API anahtarıyla karşılaştırıldığında, kısa ömürlü erişim belirteci, kimlik bilgisi sızıntısı riskine daha az eğilimlidir. Bu bölümde, API çağrılırken kullanılan erişim belirtecinin oluşturulmasına yönelik bir kimlik bilgisi oluşturma adımları ayrıntılı olarak açıklanmaktadır.

  1. Firebase Yönetici SDK'sı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 pasajını indirmek için Yeni özel anahtar oluştur'a tıklayın. Proje ayarları sayfasının Hizmet hesapları bileşeninin Yönetici SDK'sı yapılandırma pasajını 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österilmektedir), 1 saat boyunca geçerli olan bir OAuth2 belirteci 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ı ekleyerek değiştirin:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Terminalinizdeki mesajlaşma/proje dizinine gidin ve şunu yazın:
./gradlew run -Pmessage=common-message

OAuth2 jetonunu yazdırmak için.

Daha fazla bilgiyi Gönderim isteklerine yetki verme bölümünde bulabilirsiniz .

5. REST API'yi kullanarak mesaj gönderin

Artık HTTP v1 API'si aracılığıyla mesaj göndermeye hazırsınız. Aşağıdaki adımları takip et:

  • Erişim belirtecini bir HTTP istek başlığına eklemek için:
  • Belirteci Yetkilendirme başlığının değeri olarak Authorization: Bearer <access_token>
  • curl kullanarak FCM v1 API'sine bir HTTP isteği yapın:
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 projesinde ve Android uygulaması kurulumunda belirtilen Android uygulama kodunda bulunabilir. Varsayılan olarak "weather" dur.

  • Bir mesaj başarıyla iletildikten sonra ekranınızda aşağıdaki resme benzer bir bildirim açılır görmelisiniz:

54ae84ece22202cd.png

6. Sonuç

Tebrikler! Codelab'i başarıyla tamamladınız:

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

FCM'nin sunduğu gelişmiş özellikleri keşfetmek için aşağıdaki referanslar yararlı olacaktır: