程序
我要:
1。从Google Directory API获取OrgUnit
2.阅读OrgUnit并收集所需数据
3.尝试删除刚刚收集的OrgUnit。
这会以某种方式导致404 [未找到]错误
请记住我正在使用的DirectoryService类正常工作。
我修改了此示例中的代码以便于阅读,因为示例:不包括异常处理等。
API
using Google.Apis.Admin.Directory.directory_v1
1。从Google Directory API获取OrgUnit
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.Apis.dll中出现未处理的“Google.GoogleApiException”类型例外情况
其他信息:Google.Apis.Requests.RequestError 未找到组织单位[404]
答案 0 :(得分:1)
我的声誉不够高,无法在发布答案之前添加评论以澄清,所以我必须在此做出一些假设。
首先假设您使用服务帐户访问API。
第二个假设是您从Google管理控制台获得了证书,而且这些都是有序的。
当我通过API更新用户帐户时,我遇到了类似的问题,以及为我修复的问题是让目录管理员帐户充当服务帐户的代理。
以下是我用来初始化Google Directory Service的代码。
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
{
}
}