无法使用Google日历Api阻止空间

Res*_*ent 8 google-calendar-api google-api google-api-java-client service-accounts google-admin-sdk

这是我的java代码使用此代码我正在尝试创建具有房间的事件(房间是使用资源Google Calendar API添加的)事件创建成功完全与房间A.但是,当我检查谷歌日历并尝试查看可用房间在那个房间是可用的.我希望它不应该显示或它应该显示与罢工可以任何人请告诉我这个问题的解决方案我在做错误是有许可问题请建议我.

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("account@gmail.com"),
             new EventAttendee().setEmail("anil@gmail.com"), new EventAttendee().
         setEmail("company.com_35353134363037362d333130@resource.calendar.google.com").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();

 }
Run Code Online (Sandbox Code Playgroud)

Res*_*ent 0

大家好,经过谷歌长时间搜索,我找到了解决方案。

创建事件谷歌事件的步骤。

步骤1:设置以下范围来授权api。

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

Step2:授权时请求管理和查看日历的权限,用户必须允许。并将生成授权码。

Step3:通过生成的授权码创建access_token

步骤 4:将生成的 access_token 传递给 craete google 事件。

创建谷歌事件的Java代码

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();

}
Run Code Online (Sandbox Code Playgroud)

这些步骤对我来说在使用 Google 日历 api 创建事件时会占用空间。

我尝试过使用服务帐户的另一种方式,在这种情况下我们能够创建事件但无法阻止房间。