Я пытаюсь использовать некоторые данные о членах нашей учетной записи G Suite Business в проекте Java / Spring. Я настроил делегирование на уровне домена для служебной учетной записи с соответствующим API-интерфейсом «Каталог», и получение данных пользователя работает как чудо - но при запросе данных orgUnits я всегда получаю ошибку «401 Несанкционировано».
Это неНеважно, если я использую «только для чтения» или нет, и это также работает с «DirectoryScopes.ADMIN_DIRECTORY_GROUP».
private Directory getDirectoryService(String type) {
//ommit some variables...
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_ID)
.setServiceAccountUser(SERVICE_ACCOUNT_USER)
.setServiceAccountScopes(SCOPES)
.setServiceAccountPrivateKeyFromP12File(new java.io.File(CREDENTIALS_FILE_PATH))
.build();
return new Directory.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APP_NAME)
.setHttpRequestInitializer(credential)
.build();
}
//works
Users users = getDirectoryService(DirectoryScopes.ADMIN_DIRECTORY_USER).users()
.list()
.setCustomer(CUSTOMER_ID)
.execute();
//401
OrgUnits units = getDirectoryService(DirectoryScopes.ADMIN_DIRECTORY_ORGUNIT).orgunits()
.list("")
.setCustomerId(CUSTOMER_ID)
.execute();
Первый вызов работает, но второй дает ошибку: com.google.api.client.auth. oauth2.TokenResponseException: 401 не авторизован