在Google Calendar API中创建群组日历

时间:2014-03-05 09:16:50

标签: java google-api google-calendar-api google-api-java-client google-groups

基本上我的Java应用程序正在为每个Google域用户创建一个或几个Google日历。

为了克服日历创建限制(每几小时左右25个cals),我实施了冒充每个所述用户的服务帐户。所述服务帐户具有在管理控制台中定义的API访问权限。

我通过设置:

成功创建了所有这些日历
.setServiceAccountUser("username@ourdomain.com").

但现在我需要为每个组创建一个日历。如果我尝试模拟组用户(.setServiceAccountUser(“groupname@ourdomain.com”)),我会收到这样的错误:

400 Bad Request
{
  "error" : "access_denied",
  "error_description" : "Requested scopes not allowed:
   https://www.googleapis.com/auth/calendar 
   https://www.googleapis.com/auth/calendar.readonly"
}

相关代码:

private static HttpTransport httpTransport;

private static final String SERVICE_ACCOUNT_EMAIL = "serviceaccountetcetera@developer.gserviceaccount.com";
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "path\to.p12";    

JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
 .setTransport(httpTransport)
 .setJsonFactory(jsonFactory)
 .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
 .setServiceAccountScopes(CalendarScopes.all())
 .setServiceAccountPrivateKeyFromP12File(new java.io.File(
  SERVICE_ACCOUNT_PKCS12_FILE_PATH))
 .setServiceAccountUser("groupname@ourdomain.com")
 .build();

client = new com.google.api.services.calendar.Calendar.Builder(httpTransport, 
 JSON_FACTORY, credential).setApplicationName(
 APPLICATION_NAME).build();

Calendar entry = new Calendar();
entry.setSummary("summary");

Calendar result = client.calendars().insert(entry).execute();

为什么我不能冒充群组用户名来创建群组日历? 如何以其他方式创建几百个组日历?​​

1 个答案:

答案 0 :(得分:0)

Google支持称,无法模仿群组用户。

我必须通过冒充某些群组用户创建日历并与群组共享。