2017-10-30 23 views
9

Chúng tôi đang sử dụng thành công Legacy HTTP Server Protocol trên máy chủ của chúng tôi cho FCM. Tôi muốn cập nhật thành FCM HTTP v1 API ngay hôm nay.Nhận phản hồi 403 với API Nhắn tin qua đám mây Firebase "mới"

tôi đã làm nó step by step và khi máy chủ gọi là yêu cầu, chúng tôi nhận được phản ứng này:

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

Đây là mã máy chủ:

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(); 

Các 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(); 
} 

Tôi đã tải xuống tệp json từ trang adminsdk của đám mây firebase.

Tất cả với projectid cùng ...

tôi cập nhật những 2 libs trên máy chủ:

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

Các getAccessToken() tole trả lại một accesstoken: "ya29.c.Elr0BAa ... "

Tôi nghĩ, tôi bỏ lỡ một bước nhỏ, có thể bạn có thể trợ giúp? Cảm ơn bạn trước!

Edit: Nó đang làm việc bây giờ với gợi ý của arterpa! Cảm ơn một lần nữa!

Sau đó tôi nhận được một lỗi 400, vì vậy cái gì đó trong dữ liệu yêu cầu đã sai:

Vấn đề là, chúng tôi đã không chuyển đổi tất cả các data{...} giá trị chuỗi. Với giao thức kế thừa, đó không phải là vấn đề, nhưng với API FCM HTTP v1, nó phải là chuỗi! ;)

Trả lời

15

Tôi gặp sự cố này và có vẻ như bạn cần bật API FCM cho dự án của mình tại Google API console.

+3

Tôi đang nói rằng trước đây tôi đã gặp sự cố này nhưng đã khắc phục sự cố. Tôi bị cấm 403 vì sử dụng API FCM HTTP v1 mới, trước tiên bạn cần bật API FCM trên trang tổng quan API Google của mình, trước đây không cần thiết cho giao thức HTTP cũ. – arterpa

+0

Giải thích là hợp lý. Hãy lưu ý rằng các câu trả lời ngắn được tự động gắn cờ để xem xét và nó không nhìn vào cái nhìn đầu tiên ít nhất, đủ. Bình luận của bạn được ghi nhận mặc dù và cờ loại bỏ. – DiskJunky

+1

Cảm ơn bạn !! API FCM đã được bật tự động nhưng API nhắn tin FCM chưa được bật. https://console.developers.google.com/apis/library/fcm.googleapis.com/ – nickromano

Các vấn đề liên quan