Сервисный аккаунт Google: непредвиденная ошибка при обновлении токена доступа

Я пытаюсь создать класс Java для создания событий, используя учетную запись службы Google с загруженными учетными данными json. Я предоставил разрешение владельца сгенерированному идентификатору Gmail для аутентификации, а также добавил области календаря.

Ошибка Непредвиденная ошибка при обновлении токена доступа

      [com.google.auth.oauth2.OAuth2Credentials.unwrapDirectFuture(OAuth2Credentials.java:323), 
com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:170),
 com.google.auth.oauth2.ServiceAccountCredentials.getRequestMetadata(ServiceAccountCredentials.java:967),
 com.google.auth.http.HttpCredentialsAdapter.initialize(HttpCredentialsAdapter.java:96),
 com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:91),
 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.buildHttpRequest(AbstractGoogleClientRequest.java:415),
 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:525),
 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:466),
 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:576)]

Вот код для аутентификации, в который передается json из файла json.

Кроме того, нужно ли нам добавлять код для токена обновления, когда мы передаем учетные данные с использованием учетных данных json учетной записи службы?

      authenticate(){
     String json; //json credentials. 
     json = String.format(jsonFormat, null);
     return GoogleCredentials.fromStream(new ByteArrayInputStream(json.getBytes()))
                    .createScoped(scopeList)
            .createDelegated((GMAIL_USER));
}
      createEvent(){
  GoogleCredentials credentials = null;



try {
            credentials = authenticate();

            System.out.println("Got Credentials:  " + credentials);
            System.out.println("---------------Got Credentials-----------------------");
        } catch (Exception e) {
            System.out.println("Error :"+ e.getMessage());

        }


try {
            
            // Connecting to the service
            JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
            NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
            HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials);
            Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, requestInitializer)
                    .setApplicationName(APPLICATION_NAME).build();

            Event event = new Event().setSummary((E_SUMMARY)).setLocation((E_LOCATION)).setDescription((E_DESC));

            String temp = (E_START_DATE);// local variable
            DateTime startDateTime = new DateTime(temp);
            EventDateTime start = new EventDateTime().setDateTime(startDateTime).setTimeZone("America/Los_Angeles"); // Change
                                                                                                                        // America/Los_Angeles
                                                                                                                                                                                                                    // check
            event.setStart(start);

            temp = (E_END_DATE);// re-assigned to end time.
            DateTime endDateTime = new DateTime(temp);
            EventDateTime end = new EventDateTime().setDateTime(endDateTime).setTimeZone("America/Los_Angeles");
            event.setEnd(end);

            String[] recurrence = new String[] { "RRULE:FREQ=DAILY;COUNT=2" };
            event.setRecurrence(Arrays.asList(recurrence));

            EventAttendee[] attendees = new EventAttendee[] { new EventAttendee().setEmail("abc@gmail.com"),
                    new EventAttendee().setEmail("def@gmail.com"), };
            event.setAttendees(Arrays.asList(attendees));

            EventReminder[] reminderOverrides = new EventReminder[] {
                    new EventReminder().setMethod("email").setMinutes(24 * 60),
                    new EventReminder().setMethod("popup").setMinutes(10), };
            Event.Reminders reminders = new Event.Reminders().setUseDefault(false)
                    .setOverrides(Arrays.asList(reminderOverrides));
            event.setReminders(reminders);

            String calendarId = E_CALENDAR_TYPE;
            event = service.events().insert(calendarId, event).execute();
            System.out.printf("Event created: %s\n", event.getHtmlLink());

        } catch (Exception e) {
            System.out.println("--------Inside last catch block --------");
            System.out.println("Error " + e.getMessage());
            System.out.println(Arrays.toString(e.getStackTrace()));
            
        }
}

0 ответов

Другие вопросы по тегам