2017-10-30 8 views
9

FCM에 대해 서버에서 Legacy HTTP Server Protocol을 성공적으로 사용하고 있습니다. 오늘 FCM HTTP v1 API으로 업데이트하고 싶습니다."새로운"Firebase 클라우드 메시징 API로 403 응답 받기

나는 그것을 step by step를하고 서버가 요청을 호출 할 때, 우리는이 응답을 얻을 :

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 

이 서버 코드입니다

firebase 클라우드의 adminsdk 페이지에서 json 파일을 다운로드했습니다.

같은 projectid 모든

...

나는 서버에서 이러한 두 libs와 업데이트 :

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

getAccessToken() 메도는 accesstoken 반환 : "ya29.c.Elr0BAa을 ... "

작은 단계를 놓친 것 같아 도움이 될만한가요? 미리 감사드립니다.

편집 : 그것은 arterpa의 힌트와 함께 지금 노력하고 있습니다! 다시 한 번 감사드립니다!

는 그 후 나는 400 오류가 발생했습니다, 그래서 요청 데이터에 뭔가 잘못이었다

문제는, 우리가 문자열로 모든 data{...} 값을 변환하지 않았다되었다. 레거시 프로토콜에서는 문제가 아니었지만 FCM HTTP v1 API를 사용하면 문자열이어야합니다. ;)

답변

15

이 문제가 발생하여 프로젝트의 FCM API를 Google API console으로 설정해야합니다.

+3

나는 이전에이 문제에 부딪쳤다 고 말했지만 해결했다. 새 FCM HTTP v1 API를 사용하려면 이전에 기존 HTTP 프로토콜에 필요하지 않은 Google API 대시 보드에서 FCM API를 먼저 활성화해야하므로 403을 금지했습니다. – arterpa

+0

설명이 적절합니다. 짧은 답변은 검토를 위해 자동으로 플래그가 지정되며 적어도 눈에 띄지는 않습니다. 당신의 코멘트는 언급되어 있지만 깃발은 제거되었습니다. – DiskJunky

+1

감사합니다! FCM API는 자동으로 활성화되었지만 FCM Messaging API는 활성화되지 않았습니다. https://console.developers.google.com/apis/library/fcm.googleapis.com/ – nickromano