6
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+"&registration_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()); 

} 

Quando chiamo il codice di cui sopra, mi dà risposta come 401 Unauthorized. Non sono in grado di capire perché sto ottenendo questo errore. Ho usato la chiave del server corretta. C'è qualche errore di sintassi o qualcosa di sbagliato nella strategia utilizzata da me.firebase (fcm) dice 401 non autorizzato

ho seguito la https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol documentazione

risposta

8

Provare a sostituire:

con.setRequestProperty("Authorization: key", "<YOUR API KEY>"); 

con:

con.setRequestProperty("Authorization", "key=<YOUR API KEY>"); 
+1

Grazie .. Ha funzionato !!! –

+1

ha funzionato ora, grazie –

9

appena risolto il problema per me, ho cambiato l'API Key Server, che è dato nella scheda Messaggi Cloud, nella Console FCM. In Panoramica del progetto, Gestisci, c'è la scheda Cloud Messaging, che mostra un utilizzo della API API SERVER che potrebbe essere. Nel file json chiave client_api e SERVER_API_KEY diverso !!

+0

Grazie mille! – DmitryKanunnikoff

-1

https://firebase.google.com/docs/cloud-messaging/server

"Assicurarsi che questa è la chiave del server, il cui valore è disponibile nella scheda di messaggistica cloud del riquadro Firebase Impostazioni console. Android, iOS, e le chiavi del browser vengono respinti da FCM".

3

Basato su Risposta di Harco, nella console di Firebase guardare "Impostazioni progetto" (fare clic sull'icona dell'ingranaggio) e selezionare la scheda "Cloud Messaging". "Chiave del server" è ciò di cui hai bisogno.

enter image description here

effettivo su 2017/06/28.

Problemi correlati