繁体   English   中英

Google OAuth2-Calendar API v3-Java

[英]Google OAuth2 - Calendar API v3 - Java

我需要一些帮助,我有一个在GAE上运行的应用程序,该应用程序从互联网页面中读取了一些信息并将其作为事件放入我的日历中。

在Google将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(); } 

在插入事件时,如果您在事件中传递“ primary”:插入,

事件createdEvent = service.events()。insert('primary',event).execute();

然后将事件插入主日历。

如果您要创建的事件不是主要事件,则创建次要日历。 这是链接 您可以从CalendarList:列表中获取日历列表 ,您可以在其中看到主日历和辅助日历的日历ID。 然后,在插入事件时,在事件:插入中传递辅助日历ID而不是'primary'。 如果您有任何疑问,请告诉我。

经过数小时的搜索,我找到了一种可能的解决方案,我将其描述如下:

  1. 共享具有对服务电子邮件的写许可权的日历(xxxxxxxx@developer.gserviceaccount.com)
  2. 运行我的代码并获取特定的日历ID
  3. 跑Calendar.events()。insert(“ calendarid”,event).execute()

我解决了我的问题。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM