2016-08-29 8 views
5

मैंने यहां दिए गए उदाहरण की कोशिश की।थ्रेड "मुख्य" com.google.api.client.auth.oauth2 में अपवाद। टोकन रेस्पॉन्स अपवाद: 401 अनधिकृत

Exception in thread "main" com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized 
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105) 
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287) 
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307) 
at com.google.api.client.auth.oauth2.Credential.executeRefreshToken(Credential.java:570) 
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489) 
at com.google.api.client.auth.oauth2.Credential.intercept(Credential.java:217) 
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 
at SheetsQuickstart.main(SheetsQuickstart.java:106) 

मैं इसे करने के लिए सभी आवश्यक अनुमति दी हुई है -

https://developers.google.com/sheets/quickstart/java

इसका मुझे इस अपवाद देने

मैं उपयोग कर रहा हूँ चादर एपीआई संस्करण v4

अपडेट -

अगर मैं उदाहरण में email id गुजर रहा बजाय user तो इसकी मुझे इस प्रतिक्रिया दे रहा है।

परिवर्तन -

public static Credential authorize() throws IOException { 
    // Load client secrets. 
    InputStream in = 
     SheetsQuickstart.class.getResourceAsStream("/client_secret.json"); 
    GoogleClientSecrets clientSecrets = 
     GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); 

    // Build flow and trigger user authorization request. 
    GoogleAuthorizationCodeFlow flow = 
      new GoogleAuthorizationCodeFlow.Builder(
        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) 
      .setDataStoreFactory(DATA_STORE_FACTORY) 
      .setAccessType("offline") 
      .build(); 
    //Changed Part. 
    Credential credential = new AuthorizationCodeInstalledApp(
     flow, new LocalServerReceiver()).authorize("[email protected]"); 
    System.out.println(
      "Credentials saved to " + DATA_STORE_DIR.getAbsolutePath()); 
    return credential; 
} 

प्रतिक्रिया -

Name, Major 
Alexandra, English 
Andrew, Math 
Anna, English 
Becky, Art 
Benjamin, English 
Carl, Art 
Carrie, English 
Dorothy, Math 
Dylan, Math 
Edward, English 
Ellen, Physics 
Fiona, Art 
John, Physics 
Jonathan, Math 
Joseph, English 
Josephine, Math 
Karen, English 
Kevin, Physics 
Lisa, Art 
Mary, Physics 
Maureen, Physics 
Nick, Art 
Olivia, Physics 
Pamela, Math 
Patrick, Art 
Robert, English 
Sean, Physics 
Stacy, Math 
Thomas, Art 
Will, Math 

मैं हल करने 400 - Unable to parse range: Class Data!A2:A4"

400 Bad Request Resolution

+1

@pnuts ध्यान के लिए धन्यवाद। मैंने उस टैग को हटा दिया है। –

उत्तर

3

सबसे पहले, सुनिश्चित करें कि आप ठीक से पालन करते हैं इस लिंक से आगे मदद मिली quickstart guide ईएस में कदम अपने डेवलपर कंसोल में शीट्स एपीआई को सक्षम करके pecially।

अब त्रुटि TokenResponseException के लिए: 401 अनधिकृत, इस thread, जब एपीआई बनाने पहुंच टोकन के साथ कहता है कि त्रुटि के लिए सामान्य कारणों में से आधारित हैं:

  • समाप्त हो गई है पहुँच टोकन (सबसे सामान्य)

  • डेवलपर गलती से एपीआई अक्षम (असामान्य)

  • उपयोगकर्ता रद्द टोकन (दुर्लभ)

कभी-कभी, HTTP 4xx के प्रतिक्रिया निकाय में अधिक स्पष्टीकरण मौजूद होता है। जावा क्लाइंट में, उदाहरण के लिए, आप त्रुटि लॉग इन करना चाहिए, क्योंकि यह समस्या निवारण में मदद करेंगे:

try { 
     // Make your Google API call 
} catch (GoogleJsonResponseException e) { 
     GoogleJsonError error = e.getDetails(); 
     // Print out the message and errors 
} 

आप अपने मौजूदा कोड लेने के लिए और यहाँ एक API कॉल करने के जब भी आप एक HTTP 4xx हो और लोग इन कि प्रतिक्रिया कर सकता है । यह कुछ उपयोगी जानकारी वापस कर देगा।

यदि टोकन अमान्य है, तो आप इन चरणों का पालन कर सकते हैं।

  1. अपने डेटास्टोर या डेटाबेस से एक्सेस टोकन निकालें।
  2. नया एक्सेस टोकन प्राप्त करने के लिए रीफ्रेश टोकन का उपयोग करें (यदि आप रीफ्रेश टोकन का उपयोग कर रहे हैं)
  3. एपीआई कॉल को दोबारा बनाने का प्रयास करें। अगर यह काम करता है, तो आप अच्छे हैं!यदि नहीं ...
  4. tokenInfo एपीआई
  5. तो यह अभी भी अवैध है के खिलाफ पहुँच टोकन की जाँच करें, अधिक जानकारी के लिए एक पूर्ण reauth

करते हैं, तो आप इस संबंधित SO question देख सकते हैं।

+0

समस्या का विश्लेषण करने के लिए कृपया एक बार इस उदाहरण को आजमाएं। मैंने इस उदाहरण को निष्पादित करने से पहले सबकुछ जांच लिया। मैंने बस उपयोगकर्ता को ईमेल आईडी और जादू के साथ बदल दिया, जिसने काम करना शुरू कर दिया। प्रत्येक संभावित कारण जोड़ने के लिए +1 –

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