Почему я пытаюсь увидеть 403 Not Authorized для доступа к этому ресурсу / API-ошибке при попытке создать пользователя в службе каталогов Google? - PullRequest
0 голосов
/ 01 февраля 2020

Я боролся с этим уже более недели.

Я пытаюсь написать внутренний код в Java для управления пользователями (создание / добавление / удаление) в моем домене.

Я продолжаю видеть следующую ошибку:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Not Authorized to access this resource/api",
    "reason" : "forbidden"
  } ],
  "message" : "Not Authorized to access this resource/api"
}

Я использую рекомендуемый клиентский API Google для Java. Я сделал обычное:

  1. Создана служебная учетная запись
  2. Выполнено делегирование домена в учетной записи службы со следующей областью действия - https://www.googleapis.com/auth/admin.directory.user
  3. Включен API-интерфейс администратора в проекте
  4. Написан код ниже (где-то читал, что файл учетных данных JSON не работает без следующего взлома)
GoogleCredential gcFromJson = GoogleCredential.fromStream(new FileInputStream(CREDENTIALS_FILE_PATH),httpTransport, JSON_FACTORY).createScoped(scopes);
GoogleCredential credential = new GoogleCredential.Builder()
        .setTransport(gcFromJson.getTransport())
        .setJsonFactory(gcFromJson.getJsonFactory())
        .setServiceAccountId(gcFromJson.getServiceAccountId())
        .setServiceAccountPrivateKey(gcFromJson.getServiceAccountPrivateKey())
        .setServiceAccountScopes(gcFromJson.getServiceAccountScopes())
        .build();

//credential.refreshToken();

Directory directory = new Directory.Builder(httpTransport, JSON_FACTORY, null)
    .setApplicationName("My App Name")
    .setHttpRequestInitializer(credential)
    .build();

User user = new User();
// populate are the required fields only
UserName name = new UserName();
name.setFamilyName("Blogs");
name.setGivenName("Jo");
user.setName(name);
user.setPassword("password101");
user.setPrimaryEmail("jo.blogs@<my actual domain>.org");
user.setEmails("jo.blogs@<my actual domain>.org");

// requires DirectoryScopes.ADMIN_DIRECTORY_USER scope
user = directory.users().insert(user).execute();
return user

Пожалуйста, кто-нибудь, кто-нибудь помогите!

1 Ответ

0 голосов
/ 06 февраля 2020

Существует один предложенный способ создания простого Java приложения командной строки, которое выполняет запросы к API-интерфейсу Справочника. Вы выполнили все эти шаги? Java Быстрый старт

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