OrgUnit не найден с помощью Google Directory API

процедура

Я:

1. Получить OrgUnit из каталога Google API
2. Прочитайте OrgUnit и соберите необходимые данные
3. Попробуйте удалить OrgUnit я просто собирал.

Это как-то приводит к ошибке 404 [не найдено]
пожалуйста, имейте в виду, что класс DirectoryService, который я использую, работает правильно.
я изменил код в этом примере, чтобы сделать его легко читать, например: обработка исключений не включена и т. д.

API-интерфейс

using Google.Apis.Admin.Directory.directory_v1

1. Получить OrgUnit из каталога Google API

DirectoryService directoryService = ServiceInitializers.InitializeDirectoryService();
OrgUnit oUnit = directoryService.Orgunits.List(Settings.customerId).Execute().OrganizationUnits.FirstOrDefault();


2.Прочитайте OrgUnit и соберите необходимые данные

string orgUnitPath = oUnit.OrgUnitPath;


3.Попробуйте удалить OrgUnit я просто собрал

var orgUnitDeleteResult = directoryService.Orgunits.Delete(Settings.customerId, orgUnitPath).Execute();


За Исключением

GoogleApiException был необработанным

необработанное исключение типа " Google.GoogleApiException " произошло в Google.Апис.файл DLL

Дополнительная информация: в Google.Апис.Запросы.RequestError Org unit не найден [404]

1 ответов


моя репутация недостаточно высока, чтобы добавить комментарий, чтобы получить разъяснение перед публикацией ответа, поэтому мне придется сделать некоторые предположения здесь.

первое предположение заключается в том, что вы используете служебную учетную запись для доступа к API.

второе предположение заключается в том, что у вас есть справка из административных панелей систем Google и все в порядке.

У меня была аналогичная проблема, когда я обновлял учетные записи пользователей через API, и что это исправило для меня имел учетную запись администратора каталога в качестве делегата для учетной записи службы.

вот код, который я использую для инициализации службы каталогов Google.

private static DirectoryService initializeGoogleDirectoryService()
{
    try
    {
        String serviceAccountEmail = "your_service_account_email@developer.gserviceaccount.com";

        var certificate = new X509Certificate2(@"your_certificate_name.p12", "your_secret", X509KeyStorageFlags.Exportable);

        // For the service account to work, a user with admin privs must be assigned as the delegate.
        ServiceAccountCredential credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(serviceAccountEmail)
           {
               // Change the scope here to the one you need to modify org units.
               Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser },
               User = "administrator_account@your_google_apps_domain.com"
           }.FromCertificate(certificate));

        // Create the service.
        var service = new DirectoryService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Your_Application_Name"
        });

        return service;
    }
    catch (Exception ex)
    {
        // Exception handling code below.
        return null;
    }
    finally
    { 
    }
}