Google Directory API выдает 401 с сервисной учетной записью только для ADMIN_DIRECTORY_ORGUNIT - PullRequest
1 голос
/ 02 октября 2019

Я пытаюсь использовать некоторые данные о членах нашей учетной записи 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 не авторизован

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...