基本的に、私の 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();
グループ ユーザー名を偽装してグループ カレンダーを作成できないのはなぜですか? 他の方法で数百のグループ カレンダーを作成するにはどうすればよいですか?