2012-08-10 12 views
9

में HTTP प्रतिक्रिया कोड 401 नीचे अपवाद है जो मुझे मिल रहा है भले ही सर्वर और ब्राउज़र अनुप्रयोग के लिए मेरी एपीआई कुंजी मान्य है। मैंने कर्ल का उपयोग करके इसे चेक किया। मैं यूटीएफ -8 और जेएसओएन दोनों प्रारूपों में जीसीएम अनुरोध भेजता हूं। बाहरी कॉर्पोरेट नेटवर्क से इसका परीक्षण।Google जीसीएम

java.io.IOException: Server returned HTTP response code: 401 for URL: https://android.googleapis.com/gcm/send 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) 
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) 
     at java.net.URLConnection.getContent(URLConnection.java:688) 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getContent(HttpsURLConnectionImpl.java:406) 
     at gcm1.MessageUtil.sendMessage(MessageUtil.java:58) 

क्या मुझे इसके कारण और समाधान पता हो सकता है?

इस खाते के लिए आपको संदेश प्रमाणित नहीं किया जा सकता है भेजने के लिए उपयोग करने के लिए कोशिश कर रहे हैं:

+0

अभी जो ब्राउज़ कर रहे हैं उन लोगों के लिए, यदि आपने अचानक कोई त्रुटि (सर्वर कुंजी) किए बिना इस त्रुटि का अनुभव करना शुरू कर दिया है, तो आपको शायद अपने प्रोजेक्ट को फायरबेस में आयात करने की आवश्यकता है। मेरा जवाब देखें [यहां] (http://stackoverflow.com/a/37801206/4625829)। –

उत्तर

7

यहाँ जब GCM का उपयोग कर 401 त्रुटि के लिए संभव कारण होते हैं। संभावित कारण हैं:

  • प्राधिकरण शीर्षलेख अनुपलब्ध या अमान्य वाक्यविन्यास के साथ।
  • अमान्य प्रोजेक्ट आईडी कुंजी के रूप में भेजी गई।
  • कुंजी मान्य लेकिन जीसीएम सेवा के साथ अक्षम।
  • सर्वर से उत्पन्न अनुरोध सर्वर कुंजी आईपी में श्वेतसूची नहीं है।

जांचें कि प्राधिकरण शीर्षलेख के अंदर आप जिस टोकन को भेज रहे हैं वह आपकी परियोजना से जुड़ी सही एपीआई कुंजी है।

स्रोत: https://developers.google.com/cloud-messaging/http-server-ref#error-codes

+0

मैंने कर्ल और उसके कामकाजी जुर्माना का उपयोग करके अपनी एपीआई कुंजी की जांच की। यह सफलता के साथ प्रतिक्रिया देता है: जेएसओएन प्रारूप में 1। सर्वर कुंजी आईपी में भी सर्वर सूचीबद्ध है। – chako

+2

मुझे जो चीज मिली है वह यह है कि Google को यह आवश्यक है कि आप 'प्राधिकरण' शीर्षलेख में 'key =' के साथ अपनी एपीआई कुंजी को उपसर्ग करें। इससे मुझे कोई समझ नहीं आता है (यह पहले से ही हेडर फ़ील्ड में है; 'key =' अनावश्यक है), लेकिन एक बार मैंने इसे जोड़ा, समस्या हल हो गई। – aroth

+0

अपडेट किया गया लिंक: https://developers.google.com/cloud-messaging/http-server-ref#error-codes – Jason

0

मेरे मामले में समस्या यह है कि मैं डेटासंग्रह में सही API कुंजी सेट करने के बाद पुनर्वितरित करना भूल गया था।

0

कृपया नीचे दिए गए निर्देशों के अनुसार पालन करें जो आपकी मदद कर सकता है।

अपडेट: यह भी लगता है कि जीसीएम से एफसीएम पर माइग्रेटिंग 401 अनधिकृत त्रुटि के लिए समस्या को हल करता है।

यदि आप Google डेवलपर कंसोल में कोई प्रोजेक्ट बनाने के बजाय जीसीएम का उपयोग करना शुरू कर रहे हैं, तो इसे फ़ायरबेस कंसोल में करें। प्रोजेक्ट बनाने के बाद, बस ऑटो-जेनरेट की गई सर्वर कुंजी का उपयोग करें। सर्वर कुंजी खोजने के लिए यहां दिए गए चरण यहां दिए गए हैं:

  1. अपने फ़ायरबेस कंसोल पर जाएं और नया प्रोजेक्ट बनाएं पर क्लिक करें।
  2. अपनी वांछित परियोजना का नाम भरें और अपना देश चुनें। इसके बाद, नई परियोजना सक्रिय होनी चाहिए।
  3. फिर बाएं तरफ पैनल पर, गियर बटन पर क्लिक करें और प्रोजेक्ट सेटिंग्स का चयन करें।
  4. फिर क्लाउड-मैसेजिंग टैब पर जाएं।

वर्ष GCM परियोजनाओं के लिए, आप बस परियोजना में Firebase कंसोल में आयात कर सकते हैं:

  1. जाओ अपने Firebase कंसोल के लिए और आयात परियोजना पर क्लिक करें।
  2. उस प्रोजेक्ट का चयन करें जिसे आप आयात करना चाहते हैं और आपका देश।
  3. ADD FIREBASE पर क्लिक करें। इसके बाद, नई परियोजना सक्रिय होनी चाहिए।
  4. फिर बाएं तरफ पैनल पर, गियर बटन पर क्लिक करें और प्रोजेक्ट सेटिंग्स का चयन करें।
  5. फिर क्लाउड-मैसेजिंग टैब पर जाएं।
संबंधित मुद्दे