当我尝试获取日历的“主要”日历

问题描述 投票:0回答:1

使用以下代码,当我显示“主要”日历的摘要时,它显示了服务帐户的邮件地址。 我已经与服务帐户分享了我的Google帐户日历,根据Gemini的说法,该帐户使它们在服务帐户中可见。 但是,除了奇怪的“主要”日历摘要之外,当我尝试列出它们时,它还返回零日历(应该显示2-我的主要和我的家人)。 我做错了什么?

List< String > scopes = Arrays.asList( "https://www.googleapis.com/auth/calendar.readonly" ); GoogleCredential googleCredential = GoogleCredential .fromStream(new FileInputStream(SERVICE_ACCOUNT_KEY_PATH)) .createScoped( scopes); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); Calendar calendarService = new Calendar.Builder(httpTransport, JSON_FACTORY, googleCredential) .setApplicationName("CalendarListExample") .build(); com.google.api.services.calendar.model.Calendar calendar = calendarService.calendars().get("primary").execute(); System.out.println( "Summary: " + calendar.getSummary() ); CalendarList calendarList = calendarService.calendarList().list().execute(); if ( calendarList.getItems().size() == 0 ) { System.out.println( "No calendars" ); }

输出为:

Summary: [email protected] No calendars

Edit:我更改了将“主要”日历的行更改为此(提供我在线某人发布的个人电子邮件地址):

com.google.api.services.calendar.model.Calendar calendar = calendarService.calendars().get("[email protected]").execute();

返回

Summary: [email protected]

Edit2:我使用了日历的摘要,实际上返回了一个错误。这让我认为我的电子邮件地址和服务帐户的电子邮件地址都在找到一些东西。它还包含适合我的个人电子邮件帐户的正确时区和服务帐户的UTC时区。
calendarService.calendars().get("mycalendarsummary").execute() Authentication failed: 404 Not Found GET https://www.googleapis.com/calendar/v3/calendars/mycalendarsummary { "code": 404, "errors": [ { "domain": "global", "message": "Not Found", "reason": "notFound" } ], "message": "Not Found" }

wring绕着我自己的问题...
google-api google-oauth google-calendar-api
1个回答
0
投票

CalendarList calendarList = calendarService.calendarList().list().execute();

似乎只是列出了服务帐户的不存在日历,而不是任何共享日历。 所以我在日历列表中看不到

但我可以访问我的个人电子邮件帐户的日历,以下操作:

com.google.api.services.calendar.model.Calendar calendar = calendarService.calendars().get("[email protected]").execute();

要看到事件,我可以做到这一点:

Events events = calendarService.events().list( "[email protected]").setPageToken( pageToken ).execute();

现在我只需要弄清楚如何查看我的个人电子邮件帐户的其他日历(使用电子邮件地址返回主日历)


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.