我需要一些帮助,我有一个在GAE上运行的应用程序,它从互联网页面读取一些信息并作为事件放在我的日历中。
谷歌将API更改为v3后,我无法使用自己的Gmail进行连接。 在此之前,我使用CalendarService传递凭据(电子邮件和应用程序密码)。
现在我需要使用从OAuth2创建的另一封电子邮件,但在创建活动时,此活动已创建为此新电子邮件的“主要”日历。
如何使用我自己的电子邮件进行连接,并将这些事件放在正确的日历中,而不是主要日历?
感谢您的帮助和时间。 塞尔索
修改
我试图阅读日历列表,但它是空的。我认为这是因为我使用OAuth2连接的电子邮件,但我不确定。
请看一下。
你的时间。
protected Calendar getCalendarService() throws GeneralSecurityException, IOException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();
Credential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("xxxxxxxx@developer.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(new File("cert.p12"))
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))
.build();
return new Calendar.Builder(httpTransport, jsonFactory, credential).setApplicationName("appname").build();
}
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();
Credential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("xxxxxxxx@developer.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(new File("cert.p12"))
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))
.build();
return new Calendar.Builder(httpTransport, jsonFactory, credential).setApplicationName("appname").build();
}
答案 0 :(得分:0)
插入活动时,如果您通过了'' primary'在事件中:插入,
事件createdEvent = service.events()。insert(' primary',event).execute();
然后将事件插入主日历。
如果您要创建不属于主要活动的活动,请创建辅助日历。这是link。您可以从CalendarList: list获取日历列表,您可以在其中查看主日历和辅助日历的日历ID。然后,在插入事件时,传递辅助日历ID而不是事件中的' primary'插入。如果您有任何问题,请告诉我。
答案 1 :(得分:0)
经过更长时间的搜索后,我找到了一个可能的解决方案,我将其描述如下:
我解决了我的问题。感谢。