private void sendMsg() {
DBManager dbManager = DBManager.getInstance();
ArrayList<String> firebaseIds;
try {
ResultSet rs= dbManager.getRegisteredFirebaseDevice();
while(rs.next()){
System.out.println(rs.getString(1));
firebaseIds.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
String url = "https://fcm.googleapis.com/fcm/send";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("Authorization: key", "AIzaSyAl6S936qt_NKKFwwbd-NEmiSGIL7G_yJc");
con.setRequestProperty("Content-Type", "application/json");
// String msg="New design added in "+getCategory(designCategory)+". Design no."+designNo;
// String urlParameters = "data.msg="+msg+"®istration_id="+firebaseIds.get(0);
JSONObject msg=new JSONObject();
msg.put("msg","New design added in "+getCategory(designCategory)+". Design no."+designNo);
JSONObject parent=new JSONObject();
parent.put("to", firebaseIds.get(0));
parent.put("data", msg);
// String urlParameters = "registration_id="+firebaseIds.get(0);
// Send post request
con.setDoOutput(true);
OutputStreamWriter wr= new OutputStreamWriter(con.getOutputStream());
wr.write(parent.toString());
// DataOutputStream wr = new DataOutputStream(con.getOutputStream());
// wr.writeBytes(urlParameters);
// wr.flush();
// wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + parent.toString());
System.out.println("Response Code : " + responseCode+" "+con.getResponseMessage());
}
上記のコードを呼び出すと、401 Unauthorized
として応答します。このエラーが発生する理由を理解できません。適切なサーバーキーを使用しました。私が使用している戦略に構文エラーや何か問題がありますか?.
https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol ドキュメントに従いました
交換してみてください:
con.setRequestProperty("Authorization: key", "<YOUR API KEY>");
と:
con.setRequestProperty("Authorization", "key=<YOUR API KEY>");
問題を解決したばかりで、FCMコンソールの[クラウドメッセージング]タブに表示されるサーバーAPIキーを変更しました。 [プロジェクトの概要]の[管理]には、[クラウドメッセージング]タブがあり、サーバーAPIキーの使用法が表示されます。 jsonファイルではclient_apiキーとSERVER_API_KEYが異なります!!