Google에서 제공하는 (곧 사용 중단 될 예정인) Google 프로비저닝 API를 Google에서 제공하는 .NET 클라이언트 라이브러리를 통해 Admin SDK 디렉토리 API로 마이그레이션하려고합니다. . 도메인에 대한 그룹을 얻을 수있는 호출합니다 (.NET 클라이언트 라이브러리를 통해) 기존 프로비저닝 API에서 Google Admin SDK 디렉토리 API - 다양한 도메인에서 그룹 가져 오기
은 매우 간단했다 :Google.GData.Apps.AppsService apps = new Google.GData.Apps.AppsService(AppDomain, DomainAdminEmail, AdminPassword);
Google.GData.Apps.Groups.GroupsService service = apps.Groups;
AppsExtendedFeed appsFeed = service.RetrieveAllGroups();
아니 정확히 로켓 과학, 필요한 경우에만 자격 증명은 도메인했다 , 도메인의 관리자 이메일 및 관리자 비밀번호가 포함됩니다. 이 세 매개 변수를 제공 할 수있는 한 모든 도메인에 대한 그룹을 가져올 수 있습니다.
저는 (새 .NET 클라이언트 라이브러리를 통해) 새 Admin SDK 디렉토리 API를 사용하여 동일한 통화를 만드는 데 2 일 동안 노력했지만, 매우 힘든 시간을 보냈습니다. 모든 작업을 수행 할 수있는 유일한 방법은 mwpreston의 유용한 post을 기반으로 개인 키 파일 생성을 포함하여 도메인의 관리자 전자 메일과 연결된 프로젝트에 대한 서비스 계정을 만드는 것입니다.
(서비스 계정에 대한 관리자 이메일 계정에 지정된대로) 서비스 계정은 특정 도메인과 연결되어 있기 때문에//Create security certificate using private key file and password.
var certificate = new X509Certificate2(pathToPrivateKeyFile, privateKeyPassword, X509KeyStorageFlags.Exportable);
//Create a service credential using the certificate, admin email and API scopes.
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
User = adminUserEmail,
Scopes = scopes
}.FromCertificate(certificate));
//Create Directory Service using the service credential and the application name.
var dirservice = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = applicationName
});
var groupsListRequest = dirservice.Groups.List();
groupsListRequest.Domain = domain;
domainGroups = groupsListRequest.Execute();
그러나, 해당 특정 도메인에서 그룹을 요청하는 데 사용할 수 있습니다.
Google은 수천 개의 서로 다른 도메인을 보유한 고객을 보유하고 있습니다. 모든 클라이언트 도메인 (개인 키 파일은 물론)에 대해 새로운 서비스 계정을 만드는 것은 비현실적입니다.
동일한 매개 변수 (도메인, 관리자 이메일 및 비밀번호)를 사용하는 방식으로 DirectoryService를 호출하는 방법을 검색했지만 검색했지만 찾을 수 없습니다. Admin API .NET 클라이언트 라이브러리에 대한 설명서는 매우 드물고 도움이되지 않습니다.
2015 년 4 월 20 일에 프로비저닝 API가 지원 중단 될 예정이므로 다른 사용자가이 문제에 직면했을 것입니다. 누구든지 도와 줄 수 있습니까?
불행히도 내 문제는 해결되지 않습니다. _different_ 많은 도메인에서 그룹 (및 그룹의 구성원)을 요청할 수 있어야합니다. 원래 API를 사용하여 도메인, 관리자 이메일 및 비밀번호를 사용하여 전화를 걸 수있었습니다. 새 API는 각 도메인에 대해 특정 서비스 계정을 사용한다고 주장하는 것 같습니다. 고객이 수천 개의 도메인을 보유하고있어 비실용적입니다. –
어쩌면 난 그저 당신의 문제를 이해할 수 없지만 내 애플리케이션에서는 자격 증명 객체 (serviceAccountUser - 대상 도메인 관리자를 제외하고는 여전히 동일 함)를 구성하여 하나의 서비스 계정으로 다른 도메인의 디렉토리 정보에 액세스합니다. 당신은 다음 코드에서 볼 수있는 디렉토리 API를 생성자/빌더 ... – user3686724
GoogleCredential.Builder BGC = 새로운 GoogleCredential.Builder() \t \t \t .setTransport (t) \t \t \t.setJsonFactory (jsonFactory) \t \t \t .setServiceAccountScopes (범위) \t \t \t .setServiceAccountPrivateKey (serviceAccountPrivateKey) \t \t \t .setServiceAccountId (Config.SERVICE_ACCOUNT_ID) .setServiceAccountUser (serviceAccountUser); 디렉토리 dir = 새 Directory.Builder (gc.getTransport(), gc.getJsonFactory(), null) .setHttpRequestInitializer (gc) .build(); – user3686724