2012-01-24 12 views
8

पर कॉल करने के लिए कैसे करें मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं और मुझे "मुझे" जानकारी Google से प्राप्त करने की आवश्यकता है, लेकिन मैं हमेशा किसी भी प्रतिक्रिया में समाप्त होता हूं कोड 401 या 403. मैं क्या गलत कर रहा हूँ?https://www.googleapis.com/plus/v1/people/me पर Google

private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me"; 

मैं द्वारा (ध्यान दें ... नीचे कोड छोटा है) OAuth टोकन प्राप्त: यहाँ मेरी कोड है

Account googleAccount = (AccountManager) getSystemService(ACCOUNT_SERVICE).getAccountsByType("com.google")[0]; 
final Bundle bundle = manager.getAuthToken(googleAccount, GOOGLE_AUTH_TOKEN_TYPE, true, null, null).getResult(); 
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN); 

अब तक तो अच्छा है ... मैं अब एक टोकन तो है सब कुछ अच्छा दिखता है।

String GOOGLE_ME_URL = "https://www.googleapis.com/plus/v1/people/me"; 
final DefaultHttpClient client = new DefaultHttpClient(); 
final HttpGet request = new HttpGet(GOOGLE_ME_URL); 
request.addHeader("Authorization", "OAuth=" + authToken); 
final HttpResponse response = client.execute(request); 

इससे प्रतिक्रिया कोड 401

मैं भी कोशिश की है:

अब मुझे जानकारी प्राप्त

final DefaultHttpClient client = new DefaultHttpClient(); 
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken); 
final HttpResponse response = client.execute(request); 

यह प्रतिक्रिया कोड 403 देता है - "दैनिक सीमा की तरह कुछ पार हो गया। कृपया साइन अप करें "।

मैं क्या गलत कर रहा हूं? मुझे क्या याद आया? यह कैसे किया जाना चाहिए?

धन्यवाद

नीचे // संपादित करता कुछ और जांच: मैं code.google.com/apis/console में एक परियोजना के लिए जोड़ा है और वहाँ से उत्पन्न होती है और जैसे, यूआरएल में डाल दिया कुंजी ले लिया: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token= "+ authToken। अब कॉल ठीक काम करता है और मुझे सही जानकारी के साथ 200 प्रतिक्रिया मिलती है। लेकिन मुझे वास्तव में इस विधि का उपयोग नहीं करना है यदि मुझे नहीं करना है और Google के अनुसार मुझे" अगर अनुरोध को प्राधिकरण की आवश्यकता होती है (जैसे किसी व्यक्ति के निजी डेटा के लिए अनुरोध), तो इसमें ओएथ 2.0 टोकन शामिल होना चाहिए। यह भी API कुंजी शामिल हो सकते हैं, लेकिन यह करने के लिए नहीं है। "- developers.google.com/+/api/oauth से

एक और बात:। अगर मैं की तरह एक और यूआरएल की कोशिश " https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= "+ authToken यह ठीक काम करता है

उत्तर

0

आप पल में http का उपयोग कर रहे हैं, लेकिन आप वास्तव में एक https पर साइट बुला रहे हैं या तो एक सुरक्षित कनेक्शन प्रक्रिया का उपयोग करें या http का उपयोग करें:।।। // पते

(माफ करना , इसे अभी तक कोई टिप्पणी नहीं कर सका)

+0

हाय और धन्यवाद का आनंद एक ही मुद्दा तुम सिर्फ गूगल + एपीआई कंसोल में सक्षम करने की आवश्यकता है। क्या आपका मतलब है कि मैं DefaultHttpClient और HttpGet का उपयोग नहीं कर सकता? क्या आप पोस्ट कर सकते हैं इसके बजाय मुझे इसे कैसे करना चाहिए? – user1140596

+0

अन्य https कॉल जैसे एच टी टी पी एस: // डब्लू डब्ल्यू w.googleapis.com/oauth2/v1/tokeninfo?access_token=my_auth टोकन उसी कोड के साथ ठीक काम करता है। मुख्य पोस्ट – user1140596

+0

में मेरा संपादन देखें हां, क्षमा करें आप सही हो सकते हैं। मैं कुछ समय पहले एक प्रमाणपत्र समस्या में भाग गया और यह एक असली परेशानी थी। मुझे इसे काम करने के लिए कुछ चीजें करना पड़ा, लेकिन अब मुझे लगता है कि आपकी समस्या एक और है। रिकॉर्ड्स के लिए, मुझे यह करना है कि मुझे क्या करना है: http://stackoverflow.com/questions/2012497/accepting-a-certificate-for-https-on-android – Scalarr

0

एक नया ऑथ टोकन जेनरेट करें अपने आवेदन के लिए डी गुप्त और पुनः प्रयास करें।

कि आपकी समस्या का समाधान हो सकता है, लेकिन अपने दैनिक पुन: प्रयास करें सीमा समाप्त हो सकती है ...

मैं एक ही आपको आ रही समस्या थी।

+0

मैंने अवैध एथोकन फ़ंक्शन का प्रयास किया है और फिर उसे प्राप्त किया है नया ऑथ टोकन लेकिन इससे मदद नहीं मिली। मुझे अभी भी वही परिणाम मिलते हैं। – user1140596

+0

बीटीडब्ल्यू, मैंने कोई "गुप्त" उत्पन्न नहीं किया है। यह क्या है? – user1140596

+0

जब आप अपना आवेदन पंजीकृत करते हैं तो गुप्त और टोकन जारी किया जाता है। – sandeep

1

आप में से कुछ Google कंसोल पर जाने का प्रयास क्यों नहीं करते हैं। इस तरह आप कम से कम 403 forbidden problems को सुधारने के लिए आवश्यक टूल तक पहुंच पाएंगे। डीएमसी

3

अधिकांश नए Google एपीआई में कोटा (दैनिक उपयोग सीमाएं) हैं और कुछ में बिलिंग समर्थन भी है (जहां आप प्रति एपीआई कॉल बिल करते हैं)। ये कोटा और बिलिंग प्रति डेवलपर की परियोजना की गणना की जाती है, न कि प्रति-उपयोगकर्ता-उपयोगकर्ता आधार पर, इसलिए Google को यह पता होना चाहिए कि कौन सा ऐप आपके एपीआई उपयोग को असाइन करेगा।

Google के OAuth 2.0 का उपयोग करने वाले API क्लाइंट आमतौर पर पंजीकरण करने और क्लाइंट आईडी और क्लाइंट रहस्य प्राप्त करने की आवश्यकता होती है।

यह ग्राहक आईडी और क्लाइंट रहस्य Google API कंसोल द्वारा वापस लौटाया जाता है: code.google.com/apis/console।

फिर आप अपने आवेदन में इन मानों का उपयोग करते हैं, और यह आपके ऐप की पहचान करता है और Google को आपके डेवलपर खाते/प्रोजेक्ट में आपके एपीआई उपयोग को असाइन करने की अनुमति देता है।

खाता प्रबंधक इंटरफ़ेस में आप उपयोग कर रहे हैं, आपके ऐप द्वारा पारित कोई क्लाइंट आईडी नहीं है, इसलिए Google पहचानकर्ता खाते/प्रोजेक्ट के कोटा को उपयोग के लिए कटौती करने की पहचान नहीं कर सकता है। यह भी नहीं जानता कि एपीआई को डेवलपर के रूप में आपके द्वारा सही ढंग से सक्षम किया गया है (टीओएस स्वीकृत, आदि)। यही कारण है कि यह आपको "साइन अप" करने और "दैनिक सीमा पार हो गई" कहने के लिए कह रही है (क्योंकि अनियंत्रित सीमा कई एपीआई के लिए शून्य अनुरोध है)।

इस परिदृश्य में, खाता प्रबंधक से पुनर्प्राप्त OAuth 2.0 टोकन के साथ API एक्सेस करने के लिए आपके द्वारा "कुंजी" मान को पारित करना आवश्यक है।

13

यह मुद्दा अनुरोध में पारित सरल एपीआई कुंजी के संबंध में है।

यदि कुंजी पैरामीटर अनुरोध में शामिल नहीं है, या यदि उस परियोजना के लिए Google+ एपीआई सक्रिय नहीं किया गया है, तो आपको त्रुटि मिल जाएगी: "दैनिक सीमा पार हो गई है। कृपया साइन अप करें"। , https://code.google.com/apis/console/?api=plus

  • सेवाएं पैनल के अधीन यकीन Google+ API "पर" चालू है:

    • जाएँ गूगल एपीआई यहाँ कंसोल:

      इस समस्या को हल करने के लिए, आपको निम्न कार्य करने की जरूरत है।

    • एपीआई कंसोल में, बाएं मेनू में एपीआई एक्सेस पर क्लिक करें।
    • नीचे की ओर प्रस्तुत एपीआई कुंजी की प्रतिलिपि बनाएँ।
    • अपने HTTP अनुरोध में इस API कुंजी को शामिल करें।
    GOOGLE_ME_URL + "?access_token=" + authToken + "&key=" + MY_SIMPLE_API_KEY 
    
  • +0

    इससे मदद मिली! चरण: # 1। डेवलपर कंसोल पर प्रोजेक्ट बनाएं, Google प्लस एपीआई जोड़ें। # 2। https://accounts.google.com/o/oauth2/v2/auth?client_id प्राप्त करने के साथ शुरू करें कम से कम https://www.googleapis.com/plus.login और https://www.googleapis.com/ जोड़ें स्कोप के लिए plus.me। # 3। कोड के लिए टोकन प्राप्त करें (पोस्ट https://www.googleapis.com/oauth2/v4/token) # 4।अनुमोदित अनुमतियां जांचें (https://www.googleapis.com/oauth2/v1/tokeninfo?key=YOUR_KEY&access_token=YOUR_TOKEN प्राप्त करें) - सुनिश्चित करें कि plus.me को # 5 दिया गया था। Https://www.googleapis.com/people/me?key=YOUR_KEY&access_token=YOUR_TOKEN – nagylzs

    +0

    धन्यवाद प्राप्त करें। मुझे नहीं पता कि यह क्यों खोजना मुश्किल था। अन्य इंटरफेस से एपीआई का उपयोग करने के बारे में बहुत सारे दस्तावेज़। मुझे बस सरल आरईएसटी फॉर्म की आवश्यकता थी। –

    0

    मैं आपकी मदद के लिए :)

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