0

基本的に、私の Java アプリは、Google ドメイン ユーザーごとに 1 つまたはいくつかの 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