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
{
}
}