我正在使用 Google Calendar API v3 和服务帐户模式开发一个应用程序以获得访问权限。我的应用程序似乎能够毫无问题地创建新日历,但是当我要使用 Google 日历标准网络应用程序检查结果时,我什么也看不到。这很奇怪,因为获取 CalendarList 会返回正确的日历列表。有人知道为什么会这样吗?使用服务帐户创建的日历有一些限制吗?
谢谢您的帮助。阿尔贝托
更新 1:
这是我的代码片段
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))
.setServiceAccountPrivateKeyFromP12File(new File(KEY_P12))
// .setServiceAccountUser("user@example.com")
.build();
Calendar service = new com.google.api.services.calendar.Calendar.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();
com.google.api.services.calendar.model.Calendar content = new com.google.api.services.calendar.model.Calendar();
content.setSummary("A calendar");
service.calendars().insert(content).execute();
更新 2:
有人建议我将服务帐户用户添加到凭据中(然后取消注释.setServiceAccountUser("user@example.com")
上面的代码,但它不起作用。在这种情况下,我既不能创建日历,也不能在我打电话service.calendars().insert(content).execute();
和收到时收到
400 Bad Request
{
"error" : "access_denied"
}