0

Google が提供する .NET クライアント ライブラリを介して、Google Provisioning API (まもなく非推奨) を使用するためのコードを Admin SDK Directory API に移行しようとしています。

古いプロビジョニング API (.NET クライアント ライブラリ経由) では、ドメインのグループを取得するための呼び出しは非常に単純でした。

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();

厳密にはロケット科学ではなく、必要な資格情報はドメイン、ドメインの管理者の電子メール、および管理者のパスワードだけでした。これら 3 つのパラメーターを指定できる限り、任意のドメインのグループを取得できます。

新しい Admin SDK Directory API (新しい .NET クライアント ライブラリ経由) を使用して同等の呼び出しを作成しようと 2 日間試みましたが、非常に苦労しました。私がそれをまったく機能させることができた唯一の方法は、mwpreston による有用な投稿に基づいて、秘密鍵ファイルの生成を含む、ドメインの管理者の電子メールに関連付けられたプロジェクトのサービス アカウントを作成することです):

//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();

ただし、サービス アカウントは (サービス アカウントの管理者メール アカウントで指定されているように) 特定のドメインに関連付けられているため、その特定のドメインからグループを要求するためにのみ使用できます。

何千もの異なるドメインを持つクライアントがいます。すべてのクライアントのドメイン (および秘密鍵ファイル) に対して新しいサービス アカウントを作成するのは現実的ではありません。

同じパラメーター (ドメイン、管理者の電子メール、およびパスワード) を使用する方法で DirectoryService を呼び出す方法を検索して検索しましたが、何も見つかりません。Admin API .NET クライアント ライブラリのドキュメントは非常にまばらで、役に立ちません。

Provisioning API は 2015 年 4 月 20 日に非推奨になるため、他の誰かがこの問題に直面したに違いありません。誰でも助けることができますか?

4

2 に答える 2

0

Google Developer Console でプロジェクトを作成し、代わりに更新/アクセス トークンを生成できます。ここにリンクがあります - https://developers.google.com/accounts/docs/OAuth2WebServer

私はクライアント ライブラリを使用していないため、コードについてはお手伝いできません。顧客のすべてのドメインのすべてのグループを提供する「リスト」API を使用できます (customerId を提供する場合) - https://developers.google.com/admin-sdk/directory/v1/reference/groups /リスト

于 2015-03-06T08:58:46.273 に答える