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

} 

जब मैं उपरोक्त कोड को कॉल करता हूं, तो यह मुझे 401 Unauthorized के रूप में प्रतिक्रिया देता है। मैं समझ नहीं पा रहा हूं कि मुझे यह त्रुटि क्यों मिल रही है। मैंने उचित सर्वर कुंजी का उपयोग किया है। क्या मेरे द्वारा उपयोग की जाने वाली रणनीति में कोई वाक्यविन्यास त्रुटि या कुछ भी गलत है।फायरबेस (एफसीएम) का कहना है कि 401 अनधिकृत

मैं https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol प्रलेखन

उत्तर

8

का पालन किया है की जगह का प्रयास करें:

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

:

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

धन्यवाद ... यह काम किया !!! –

+1

अब काम किया, thanx –

9

बस मुझे के लिए समस्या हल, मैं सर्वर API कुंजी है, जो दिया जाता है बदल क्लाउड मैसेजिंग टैब पर, एफसीएम कंसोल में। प्रोजेक्ट अवलोकन में, प्रबंधित करें, क्लाउड मैसेजिंग टैब है, यह एक सर्वर एपीआई कुंजी उपयोग दिखाता है। जेएसएस फ़ाइल क्लाइंट_एपीआई कुंजी और SERVER_API_KEY अलग में !!

+0

बहुत बहुत धन्यवाद! – DmitryKanunnikoff

-1

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

"यकीन है कि यह सर्वर कुंजी, जिसका मूल्य Firebase कंसोल सेटिंग्स फलक के क्लाउड संदेश टैब में उपलब्ध है। Android, iOS, और ब्राउज़र कुंजी FCM द्वारा अस्वीकार कर दिया जाता है सुनिश्चित करें।"

3

पर आधारित हार्को का उत्तर, फ़ायरबेस कंसोल में "प्रोजेक्ट सेटिंग्स" (गियर आइकन पर क्लिक करें) पर देखें और "क्लाउड मैसेजिंग" टैब चुनें। "सर्वर कुंजी" आपको चाहिए।

enter image description here

2017.06.28 पर

वास्तविक।

संबंधित मुद्दे