8

Это мой код Java, используя этот код. Я пытаюсь создать событие с комнатой (номер добавлен с использованием ресурса API календаря Google). Событие создало успех полностью с комнатой A. Однако, когда я регистрирую Календарь Google и попробуйте посмотреть доступный номер в этом номере. Я бы ожидал, что он не должен отображаться или он должен показывать с забастовкой. Кто-нибудь может сказать мне решение для этого, где я делаю. Я ошибаюсь, это вопрос разрешения, пожалуйста, предложите мне.Невозможно заблокировать комнату с помощью Google calendar Api

public class CalendarQuickstart { 

private static final String APPLICATION_NAME = "API Quickstart"; 


private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), 
    ".credentials/calendar-java-quickstart"); 


private static FileDataStoreFactory DATA_STORE_FACTORY; 


private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 


private static HttpTransport HTTP_TRANSPORT; 

private static final List <String> SCOPES = Arrays.asList(CalendarScopes.CALENDAR); 

static { 
    try { 
     HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); 
     DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
     System.exit(1); 
    } 
} 



public static Credential authorize() throws IOException { 
    // Load client secrets. 
    /*InputStream in = CalendarQuickstart.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(); 
     Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); 
     System.out.println("Credentials saved to " + DATA_STORE_DIR.getAbsolutePath()); 
     return credential;*/ 
    Credential credential = GoogleCredential.fromStream(CalendarQuickstart.class.getResourceAsStream("/client_secret.json")) 
     .createScoped(SCOPES); 
    return credential; 
} 

public static com.google.api.services.calendar.Calendar getCalendarService() throws IOException { 
    Credential credential = authorize(); 
    return new com.google.api.services.calendar.Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) 
     .setApplicationName(APPLICATION_NAME).build(); 
} 

public static void createEvent() throws IOException { 
    Event event = new Event().setSummary("Google I/O 2015") 
     .setDescription("A chance to hear more about Google's developer products."); 

    DateTime startDateTime = new DateTime("2017-02-27T22:00:00+05:30"); 

    EventDateTime start = new EventDateTime().setDateTime(startDateTime).setTimeZone("Asia/Kolkata"); 
    event.setStart(start); 

    DateTime endDateTime = new DateTime("2017-02-27T23:00:00+05:30"); 
    EventDateTime end = new EventDateTime().setDateTime(endDateTime).setTimeZone("Asia/Kolkata"); 
    event.setEnd(end); 



    EventAttendee[] attendees = new EventAttendee[] { 
     new EventAttendee().setEmail("[email protected]"), 
      new EventAttendee().setEmail("[email protected]"), new EventAttendee(). 
     setEmail("[email protected]m").setResponseStatus("accepted") 
    }; 
    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 = "primary"; 
    event = getCalendarService().events().insert(calendarId, event).execute(); 
    System.out.printf("Event created: %s\n", event.getId()); 

} 

public static void updateEvent() throws IOException { 


    Event event = getCalendarService().events().get("primary", "3k90eohao76bk3vlgs8k5is6h0").execute(); 


    event.setSummary("Appointment at Somewhere"); 

    // Update the event 
    Event updatedEvent = getCalendarService().events().update("primary", event.getId(), event).execute(); 

    System.out.println(updatedEvent.getUpdated()); 
} 

public static void main(String[] args) throws IOException { 
    com.google.api.services.calendar.Calendar service = getCalendarService(); 


    DateTime now = new DateTime(System.currentTimeMillis()); 
    Events events = service.events().list("primary").setMaxResults(10).setTimeMin(now).setOrderBy("startTime") 
     .setSingleEvents(true).execute(); 


    List <Event> items = events.getItems(); 
    if (items.size() == 0) { 
     System.out.println("No upcoming events found."); 
    } else { 
     System.out.println("\nUpcoming events"); 
     for (Event event: items) { 
      DateTime start = event.getStart().getDateTime(); 
      if (start == null) { 
       start = event.getStart().getDate(); 
      } 
      System.out.printf("%s (%s)\n", event.getSummary(), start); 
     } 
    } 

    createEvent(); 

} 
+0

Вы используете служебную учетную запись или Oauth2, которую сложно сказать с Java, выглядит как oauth2 – DaImTo

+0

Да, я пользуюсь учетной записью службы @DalmTo –

+0

@DalmTo любое решение для этого, пожалуйста, предложите, если у вас есть какое-либо решение, я застрял в он с давних времен –

ответ

0

Привет всем после долгих поисков с помощью Google я нашел решение.

Шаги по созданию события google event.

Шаг1: Установите следующие области для авторизации api.

  1. https://www.googleapis.com/auth/calendar.readonly
  2. https://www.googleapis.com/auth/calendar

Шаг2: В то время как разрешающее просит разрешения для управления и просмотра календаря, использует должен позволить. и который сгенерирует код авторизации.

Шаг 3: Создание access_token кодом генерироваться авторизации

Шаг 4: Pass генерироваться access_token в craete Google событие.

Java код для создания Google событие

public static com.google.api.services.calendar.Calendar getCalendarService() { 

     GoogleCredential credential = new GoogleCredential().setAccessToken(access_token); 

     return new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).build(); 

} 

эти шаги Работа для меня блок комнаты, создавая событие с помощью Google Calendar API.

Я попытался другим способом, используя учетную запись службы, в этом случае мы можем создать событие, но не можем заблокировать комнату.

2

Вы используете учетную запись службы. Вы должны помнить, что учетная запись службы НЕ является вами. У учетных записей служб есть своя собственная учетная запись календаря Google. Первичный - это основной календарь.

String calendarId = "primary"; 
event = getCalendarService().events().insert(calendarId, event).execute(); 

Это событие добавит событие в основной календарь Google Apps, который вы не видите визуально в Интернете.

Вы пробовали сделать код events.list из своего кода, это должно показать вам события на учетных записях службы Google.

Если вы хотите визуально видеть это, я предлагаю вам создать календарь на своем личном аккаунте Календаря Google и предоставить доступ к его учетной записи службы, поделившись им с адресом электронной почты учетных записей службы.

Мой блог о service accounts

+0

, когда мы создаем учетную запись службы, запрашивая имя учетной записи службы и роль учетной записи службы, предложите нам то, что нам нужно заполнить. @DalmTo –

+0

Что бы вы ни пожелали, я не думаю, что это важно. – DaImTo

+0

@DalmTo то же самое, что я делаю событие, созданное с помощью комнаты A, но когда я пытаюсь создать другое событие в одно и то же время, тогда он показывает комнату A avilable, пока он не должен отображаться, или его следует ударить в комнате A –

Смежные вопросы