0

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

为了克服日历创建限制(每几个小时左右 25 次),我实施了模拟每个所述用户的服务帐户。所述服务帐户具有在管理控制台中定义的 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();

为什么我不能模拟群组用户名来创建群组日历?如何以其他方式创建数百个组日历?

4

1 回答 1

0

谷歌支持表示无法模拟组用户。

我必须通过模拟一些组用户来创建日历并与组共享。

于 2014-03-17T11:19:20.380 回答