私たちのサーバー上でLegacy HTTP Server Protocolを首尾よくFCMに使用しています。 今日は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
これは、サーバーのコードです
jsonファイルはfirebaseクラウドのadminsdkページからダウンロードしました。
同じPROJECTIDを持つすべての...
私は、サーバー上でこれらの2つのLIBS更新:
google-http-client-jackson2-1.23.0.jar
google-oauth-client-1.23.0.jar
をgetAccessToken()Methodeのはaccesstokenを返しました:「ya29.c.Elr0BAa ... "
私は小さなステップが恋しいと思います。 ありがとうございます!
編集: それは、arterpaのヒントを使用して今働いています!再度、感謝します!私は400エラーを得たので、要求データの中で何かが間違っていた
はその後:
問題だった、我々は文字列にすべてのdata{...}
値を変換しませんでした。従来のプロトコルでは問題ではありませんでしたが、FCM HTTP v1 APIでは文字列でなければなりませんでした。 ;)
私は以前この問題に遭遇しましたが、修正したと言います。新しいFCM HTTP v1 APIを使用するため、従来は従来のHTTPプロトコルには不要だったGoogle APIダッシュボードでFCM APIを有効にする必要があるため、403を禁止しました。 – arterpa
説明は妥当です。短い答えは自動的にレビューのためにフラグが立てられ、少なくとも一見、一見一見ではないことに注意してください。あなたのコメントは記載されており、フラグは削除されています。 – DiskJunky
ありがとうございます! FCM APIは自動的に有効になりましたが、FCMメッセージングAPIは有効になっていませんでした。 https://console.developers.google.com/apis/library/fcm.googleapis.com/ – nickromano