グラフAPIに接続し、テナントからAzureADからユーザーのリストを取得するC#コンソールアプリケーションを作成しようとしています。私はアプリを登録し、管理者は私に以下を与えました
SDKを使用すると、使用する必要のあるC#コードは次のようになります( https://docs.Microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=cs ):
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var users = await graphClient.Users
.Request()
.GetAsync();
ただし、コンソールアプリケーションはバッチプロセスとして実行されるため、ユーザーの操作はまったくありません。したがって、authProviderを提供するために、MS docsサイトでこの記事に従いました: https://docs.Microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS
私の目的のために、「クライアント資格情報OAuthフロー」に移動する必要があると思います。そのURLに表示されるコードですが、ここにもあります。
IConfidentialClientApplication clientApplication = ClientCredentialProvider.CreateClientApplication(clientId, clientCredential);
ClientCredentialProvider authProvider = new ClientCredentialProvider(clientApplication);
問題は、Visual StudioがClientCredentialProviderクラスを認識しないことです。インポートするアセンブリがわかりません。上では以下の使い方を使っています。
using Microsoft.Identity.Client;
using Microsoft.IdentityModel.Clients;
using Microsoft.IdentityModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
私はGitHubリポジトリの経験があまりなく、Visual Studio 2015を使用しています。サンプルコードに興味があります。見ましたが見つかりません。 MSにはいくつかの講義がありますが、インタラクティブに認証している別のタイプの認証プロバイダーを使用していますが、これは私が探しているものではありません。 TenantId/ClientIdおよびClient Secretを使用してトークンを取得します。
ユーザーを循環させたい場合は、var usersを次のコードに置き換えます。
IGraphServiceUsersCollectionPage users = graphServiceClient.Users.Request().GetAsync().Result;
foreach (User user in users)
{
Console.WriteLine("Found user: " + user.Id);
}