Я боролся с этим уже более недели.
Я пытаюсь написать внутренний код в 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. Я сделал обычное:
- Создана служебная учетная запись
- Выполнено делегирование домена в учетной записи службы со следующей областью действия - https://www.googleapis.com/auth/admin.directory.user
- Включен API-интерфейс администратора в проекте
- Написан код ниже (где-то читал, что файл учетных данных 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
Пожалуйста, кто-нибудь, кто-нибудь помогите!