google api - OAuth2.0 टोकन अजीब व्यवहार(अवैध क्रेडेंशियल्स 401)




google-api google-oauth (5)

त्रुटियों और त्रुटि कोड पर Google API डॉक्स के अनुसार:

https://developers.google.com/drive/handle-errors#401_invalid_credentials

401: Invalid Credentials

Invalid authorization header. The access token you're using is either expired or invalid.

error: {
  errors: [
   {
  "domain": "global",
  "reason": "authError",
  "message": "Invalid Credentials",
  "locationType": "header",
  "location": "Authorization",
  }
  ],
  "code": 401,
  "message": "Invalid Credentials"
  }
}

यह बिल्कुल त्रुटि के आपके संस्करण से मेल खाता है, और ऐसा संभव है कि Google आपके विचार में गलत है।

लेकिन, जैसा कि आप अच्छी तरह से जानते हैं, Google एपीआई अनुरोध उन त्रुटियों को वापस कर सकते हैं जो वास्तव में समस्या का निदान करने के लिए निराश हैं। मुझे कई कारणों से "अमान्य क्रेडेंशियल्स" त्रुटियां मिली हैं यह लगभग हमेशा सच है क्योंकि मैंने कुछ बदलाव किए हैं जो मैंने सोचा था कि कोई फर्क नहीं पड़ता, लेकिन वास्तव में करता है।

मेरा पहला विचार (यहाँ अंधेरे में गोली मारता है) Google एपीआई कंसोल पर जाना होगा:

https://code.google.com/apis/console

Googles auth टोकन सत्यापनकर्ता ( https://www.googleapis.com/oauth2/v1/tokeninfo ) एक मान्य प्रतिक्रिया वापस कर सकते हैं, लेकिन शायद ग्राहक गुप्त या क्लाइंट आईडी को बदल दिया गया होगा।

प्रतिक्रिया शरीर में भी छोटे परिवर्तन भी इस त्रुटि का कारण हो सकता है।

मुझे नहीं पता कि आप अनुरोध कैसे कर रहे हैं, क्या REST कॉल या क्लाइंट लिब द्वारा, लेकिन मैं रूबी लिब का उपयोग करता हूं जो कि कमांड लाइन इंटरफ़ेस को एपीआई कॉल बनाने की अनुमति देता है। मुझे Google एपीआई कॉल्स के निदान में यह और ओअथ 2 प्ले ग्राउंड बहुत उपयोगी पाया है।

बस एक एफवाईआई: मेरे पास Google API से केवल 2 त्रुटियां हैं: "अवैध प्रमाणन" और "अपर्याप्त अनुमतियां" उत्तरार्द्ध को लगभग हमेशा खराब स्कोप के साथ करना पड़ा है पूर्व सब कुछ के बारे में ही है

मैं यह भी कहूंगा कि यदि आपके पास 6 महीनों में केवल दो त्रुटियों का अनुभव है, तो आप भाग्यशाली हैं!

आमतौर पर, Google OAuth2.0 तंत्र महान काम कर रहा है

  1. उपयोगकर्ता चयनित स्कोप के साथ Google खाते में प्रवेश करने की अनुमति की पुष्टि करता है।
  2. रिफ़्रेश टोकन पुनर्प्राप्त और लंबे समय तक संग्रहण में सहेजा जाता है।
  3. प्रत्येक बार जरूरी है (यदि पहुंच टोकन की समय सीमा समाप्त हो गई है) पहुंच टोकन पुनर्प्राप्त और एपीआई एक्सेस करने के लिए उपयोग किया जाता है।

लेकिन कभी-कभी (इस प्रकार अब तक 6 महीने से अधिक के लिए केवल दो बार) मैंने अजीब व्यवहार अनुभव किया है:

Google एपीआई वापसी के लिए अनुरोध अमान्य क्रेडेंशियल्स (401) त्रुटि। अभिगम टोकन को ताज़ा करना (संग्रहित ताज़ा टोकन का उपयोग करना) मदद नहीं करता है।

इस समस्या का परीक्षण करते समय मुझे कुछ संरचित उत्पादन मिल गया है:

    + ------------------------------------------------------------------------- + 
    | 1.TRYING TO REFRESH THE TOKEN.                                            |
    | 2.DONE REFRESHING THE TOKEN.                                              |
    + ------------------------------------------------------------------------- + 
    |    access:           **************************************************** | 
    |   refresh:                  ********************************************* | 
    |   expires:                                                           3600 | 
    |   created:                                            2013-07-23 13:12:36 | 
    + ------------------------------------------------------------------------- + 

मैंने https://www.googleapis.com/oauth2/v1/tokeninfo पर अनुरोध भेजकर "ताजा" पहुंच टोकन को सत्यापित करने का प्रयास किया है

    + ------------------------------------------------------------------------- + 
    | 1. TRYING TO CHECK THE TOKEN .                                            |
    | 2. DONE CHECKING THE TOKEN THE TOKEN.                                     |
    + ------------------------------------------------------------------------- + 
    |       issued_to:                  ************.apps.googleusercontent.com |
    |        audience:                  ************.apps.googleusercontent.com |
    |         user_id:                                             ************ |
    |      expires_in:                                                     3600 |
    |           email:                                     **********@gmail.com |
    |  verified_email:                                                        1 |
    |     access_type:                                                  offline |
    |         scopes::                                                          |
    + ------------------------------------------------------------------------- + 
    | https://www.googleapis.com/auth/userinfo.email                            |
    | https://www.googleapis.com/auth/userinfo.profile                          |
    | https://www.googleapis.com/auth/plus.me                                   |
    | https://www.googleapis.com/auth/drive                                     |
    + ------------------------------------------------------------------------- + 

लेकिन जब मैं ड्राइव फीड का उपयोग करने की कोशिश करता हूं तो यह प्रतिक्रिया है:

    Error calling GET https://www.googleapis.com/drive/v2/files (401) Invalid Credentials

    domain:         global
    reason:         authError
    message:        Invalid Credentials
    locationType:   header
    location:       Authorization

हमें कैलेंडर के साथ भी इसी समस्या का अनुभव हुआ। इसलिए:

  1. टोकन (सब कुछ काम किया) से पहले मान्य था।
  2. रीफ्रेशिंग टोकन अभी भी काम करता है
  3. फ़ीड का अनुरोध करने से "अमान्य क्रेडेंशियल" त्रुटि का जवाब होता है।
  4. सभी अन्य टोकन अभी भी महान काम कर रहे हैं, जिसका अर्थ है कि कोड मान्य है।

टोकन ताज़ा करने की कोशिश करते समय आम तौर पर टोकन रद्द कर दिया जाता है जब "invalid_grant" त्रुटि लौटा दी जाती है

प्रशन

  1. इस व्यवहार के लिए क्या कारण हो सकता है? अगर ताज़ा टोकन रद्द कर दिया गया था या किसी अन्य तरीके से अमान्य हो गया है, तो क्या नया पहुंच टोकन का त्रुटि उत्पन्न होनी चाहिए?
  2. ताज़ा टोकन को मान्य करने का कोई तरीका है?

मैंने हाल ही में यह अजीब त्रुटि अनुभव की है। मेरा फ़िक्स: मैंने फ़ंक्शन डाल दिया है जो AuthUrl पर रीडायरेक्ट करने से पहले सभी सत्रों को ख़राब कर देता है


मैं विकास पर्यावरण पर हूँ मुझे यह समस्या भी हुई।

सबसे पहले मैंने क्रेडेंशियल रीफ्रेश करने की कोशिश की कोई परिणाम नही। फिर मैंने अपना ऐप हटा दिया (चूंकि मैं अभी भी विकास पर्यावरण पर हूं, यह ठीक था, लेकिन अगर आप पहले से इसे उत्पादन पर उपयोग कर रहे हैं, तो इस कार्रवाई में सावधानी बरतें), एक नया बनाया, क्लाइंट पर क्रेडेंशियल JSON अपडेट किया .. फिर भी, कोई परिणाम नहीं

मैंने एक नया ब्राउज़र उदाहरण खोलकर इसे सुलझाया जो मेरे Google खाते (निजी ब्राउजिंग, जब से मैं फ़ायरफ़ॉक्स पर हूं) में लॉग इन नहीं हुआ था, मेरे Google खाते पर एक बार फिर लॉग इन हुआ, और मेरे क्लाइंट (जो कि एक वेब अनुप्रयोग है )। मुझे उम्मीद है कि प्राधिकरण स्क्रीन पर पुनः निर्देशित किया गया था और उसके बाद, यह मेरे लिए ठीक काम किया


मुझे (401) Invalid Credentials प्राप्त हुई जब मैंने विशेष ऐप के लिए अपने Google खाते की पहुंच निकाल दी तो मुझे क्या करना था प्राधिकरण यूआरएल (जो कि https://accounts.google.com/o/oauth2/auth साथ शुरू होता है) का अनुरोध करना, फिर से।


मैंने इस समस्या का समाधान किया जब मैंने c: \ users \ [user] \ creditions में json फ़ाइलें निकाल दीं।