Получение GoogleJsonResponseException 401 Несанкционированное исключение при получении информации из календаря Google - PullRequest
0 голосов
/ 06 мая 2018

Я получаю следующее исключение при попытке получить данные из календаря Google. Обратите внимание, что я использую простой ключ API: Исключение в теме "главная"

com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
  "code" : 401,
  "errors" : [ {
    "domain" : "global",
    "location" : "Authorization",
    "locationType" : "header",
    "message" : "Login Required",
    "reason" : "required"
  } ],
  "message" : "Login Required"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
    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)

Вот код:

Calendar calendar = new Calendar.Builder(GoogleNetHttpTransport.newTrustedTransport(),JSON_FACTORY,null).setApplicationName(APPLICATION_NAME)
            .setGoogleClientRequestInitializer(new CalendarRequestInitializer(API_KEY))
            .build();
    List<CalendarListEntry> calendars = calendar.calendarList().list().execute().getItems();// getting exception here

Вот мои зависимости, связанные с Google:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.23.0</version>
</dependency>
<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-calendar</artifactId>
    <version>v3-rev305-1.23.0</version>
</dependency>

Ключ API был создан с помощью следующего руководства: https://docs.simplecalendar.io/google-api-key/

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы передаете нулевые учетные данные в качестве третьего параметра в Calendar.Builder Вот почему вы получаете 401.

0 голосов
/ 07 мая 2018

401 означает недопустимый заголовок авторизации.

Используемый токен доступа устарел или недействителен.

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

Попробуйте сделать следующее:

  • Получить новый токен доступа, используя токен долгосрочного обновления.
  • Если это не удается, направьте пользователя через поток OAuth, как описано в Авторизация запросов с помощью OAuth 2.0 .
  • Если вы видите это для учетной записи службы, убедитесь, что вы успешно выполнили все шаги на странице учетной записи службы .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...