Ste*_*lis 7 java google-calendar-api google-api google-apps google-api-java-client
我正在尝试使用Java Google Calendar api连接到日历.Java应用程序使用服务帐户.
我有以下代码:
java.io.File licenseFile = new java.io.File("39790cb51b361f51cab6940d165c6cda4dc60177-privatekey.p12");
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("xxx@developer.gserviceaccount.com")
.setServiceAccountUser(EMAIL_ADRESS)
.setServiceAccountScopes(CalendarScopes.CALENDAR)
.setServiceAccountPrivateKeyFromP12File(licenseFile)
.build();
client = new com.google.api.services.calendar.Calendar.Builder(
HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName("Google Calendar Sync").build();
Calendar calendar = client.calendars().get(EMAIL_ADRESS).execute();
Run Code Online (Sandbox Code Playgroud)
在最后一行,我收到一条带有消息的IOException:
ex =(com.google.api.client.auth.oauth2.TokenResponseException)com.google.api.client.auth.oauth2.TokenResponseException:400 Bad Request {"error":"access_denied"}
我dubble检查了GoogleCredential对象的值,它们是正确的.我还添加了https://www.google.com/calendar/feeds/,http://www.google.com/calendar/feeds/与应用程序ID为我的客户域控制台授权第三方应用访问
我忘记了一步吗?
api还没有完成。更具体地说是服务帐户部分。
日历所有者需要授予应用程序在其日历设置中读取/写入日历的权限。它位于日历的共享设置中,您可以在其中添加帐户的电子邮件地址并授予他们对您的日历的权限。
因此,在这种情况下,我必须将 xxx@developer.gserviceaccount.com 添加到应用程序需要访问的日历的权限/共享列表中。
由于上述问题,我还删除了另一篇没有完全发挥作用的帖子。我将取消删除它,因为它包含一些将来可能对其他人有帮助的代码片段。但请注意权限问题和服务帐户不支持 Google 日历
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |