2017-10-30 160 views
9

Biz, FCM için sunucumuzda Legacy HTTP Server Protocol ürününü başarıyla kullanıyoruz. Bugün güncellemek istedim FCM HTTP v1 API."Yeni" Firebase Bulut Mesajlaşma API'sı ile 403 yanıt alın

ben o step by step yaptım ve Sunucu isteği çağırdığında, biz bu yanıtı:

URL url = new URL("https://fcm.googleapis.com/v1/projects/[projectid]/messages:send"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestProperty("Authorization", "Bearer " + getAccessToken()); 
conn.setRequestProperty("Content-Type", "application/json"); 
OutputStream outputStream = conn.getOutputStream(); 
outputStream.write(req.getBytes("UTF-8")); 

// Exception happen here 
InputStream inputStream = conn.getInputStream(); 

getAccessToken():

private static String getAccessToken() throws IOException { 
     GoogleCredential googleCredential = GoogleCredential 
      .fromStream(new FileInputStream(ClientApiServlet.context.getRealPath("/WEB-INF/[projectid].json")))   .createScoped(Arrays.asList("https://www.googleapis.com/auth/firebase.messaging")); 
     googleCredential.refreshToken(); 
     return googleCredential.getAccessToken(); 
} 

Server returned HTTP response code: 403 for URL: https://fcm.googleapis.com/v1/projects/[projectid]/messages:send 

Bu sunucu kodudur

Json dosyasını, firebase bulutunun adminsdk sayfasından indirdim.

aynı projectid Tüm

...

sunucuda bu 2 kütüphanelerini güncelleme:

google-http-client-jackson2-1.23.0.jar 
google-oauth-client-1.23.0.jar 

getAccessToken() Methode bir accesstoken döndürdü: "ya29.c.Elr0BAa ... "

Sanırım küçük bir adımı özlüyorum, belki yardımcı olabilirsiniz? Şimdiden teşekkürler!

Düzenleme: Bu arterpa kokan şimdi çalışıyor! Tekrar teşekkürler!

Bundan sonra 400 hata var, bu yüzden istek verilerinde bir şeylerin yanlış olduğunu:

sorun, biz dizeleri tüm data{...} değerlerini dönüşüm gerçekleştirenler edildi. Eski protokol ile bir sorun değildi, ancak FCM HTTP v1 API ile dizeleri olmalı! ;)

cevap

15

Bu sorunla karşılaştım ve projeniz için Google API console numaralı telefondan FCM API'yi etkinleştirmeniz gerekiyor.

+3

Daha önce bu soruna rastladım ama düzeltdim. Yeni bir FCM HTTP v1 API'sini kullanabilmem için 403 numaralı bir hesabım var. Daha önce eski HTTP protokolü için gerekli olmayan, önce Google API kontrol panelinizde FCM API'sini etkinleştirmeniz gerekiyor. – arterpa

+0

Açıklama makul. Kısa cevapların otomatik olarak gözden geçirilmek üzere işaretlendiğini ve ilk bakışta en azından yeterli görünmediğini unutmayın. Yorumunuz belirtildi ve bayrak kaldırıldı. – DiskJunky

+1

Teşekkür ederim! FCM API'sı otomatik olarak etkinleştirildi, ancak FCM Messaging API'si olmadı. https://console.developers.google.com/apis/library/fcm.googleapis.com/ – nickromano