我正在尝试使用 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();
在最后一行,我收到一个带有消息的 IOException:
ex = (com.google.api.client.auth.oauth2.TokenResponseException) com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "access_denied" }
我重复检查了 GoogleCredential 对象的值,它们是正确的。我还在我的域控制台中添加了https://www.google.com/calendar/feeds/,http://www.google.com/calendar/feeds/,应用程序 ID 作为客户端授权第三方应用程序访问
我是不是忘记了一步?