【发布时间】:2013-09-14 14:50:39
【问题描述】:
我正在使用 Google Calendar API v3 和服务帐户模式开发一个应用程序以获取访问权限。我的应用程序似乎能够毫无问题地创建新日历,但是当我要使用 Google 日历标准网络应用程序检查结果时,我什么也看不到。这很奇怪,因为获取 CalendarList 会返回正确的日历列表。 有人知道为什么会这样吗?使用服务帐户创建的日历存在一些限制?
感谢您的帮助。 阿尔贝托
更新 1:
这是我的代码的 sn-p
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"
}
【问题讨论】:
-
你是对的,对不起 :)
-
你有什么想法吗? :(
-
我也有同样的问题。你能解决这个问题吗?
-
我认为您缺少创建日历的 Acl 条目。看到这个stackoverflow.com/questions/21094240/…
标签: java google-api google-calendar-api google-api-java-client service-accounts