.NET クライアントライブラリを Microsoft Graph に移行するMigrate .NET client library use to Microsoft Graph

この記事は、「 手順 3: アプリ を移行するプロセスの詳細を確認する」に含まれています。This article is part of step 3: review app details of the process to migrate apps.

アプリで現在 Azure AD Graph クライアントライブラリを使用している場合は、 Microsoft Graph .net クライアントライブラリに切り替えます。If your app currently uses the Azure AD Graph client library, switch to the Microsoft Graph .NET client library.

注: Microsoft Graph .NET クライアントライブラリは、.NET Framework 4.5 および .NET Standard 1.1 でのみサポートされています。NOTE: The Microsoft Graph .NET client library is only supported for .NET Framework 4.5 and .NET Standard 1.1. ただし、最新のサポート情報については、「Microsoft Graph .NET クライアントライブラリ」を参照してください。However please consult Microsoft Graph .NET client library for the latest support information.

ここでは、Microsoft Graph .NET クライアントライブラリに移行するための一般的な手順について説明します。Here, we'll look at some general steps to migrate over to the Microsoft Graph .NET client library:

  • アクセストークンを指定して Microsoft Graph クライアントを作成する方法 (ADAL または MSAL を使用して取得可能)How to create a Microsoft Graph client, given an access token (that you can acquire using ADAL or MSAL)
  • 要求を定式化する方法How to formulate requests
  • クエリビルダーの使用方法How to use query builders
  • コレクションとページングを処理する方法How to handle collections and paging

移行手順の概要Overview of the migration steps

次の手順では、アプリが既に ADAL を使用して Azure AD Graph を呼び出すためのアクセストークンを取得していることを前提としています。これで、引き続き ADAL を使用することになります。The following steps assume your app is already using ADAL to acquire access tokens to call Azure AD Graph, and that for now you will continue to use ADAL. Msal への切り替えは、 msal への移行で説明されている個別の手順として実行できます。Switching to MSAL can be done as a separate step described in migrating to MSAL.

  1. Microsoft Graph へのアクセストークンを取得するには、 Resourceurl をからに更新し https://graph.windows.net https://graph.microsoft.com ます。To acquire an access token to Microsoft Graph, update resourceUrl from https://graph.windows.net to https://graph.microsoft.com.

  2. アプリで、次のように変更して Microsoft Graph クライアントライブラリへの参照を更新します。In your app, update references to the Microsoft Graph client library by changing:

    using Microsoft.Azure.ActiveDirectory.GraphClient;
    

    宛先:To:

    using Microsoft.Graph;
    
  3. パッケージマネージャーを使用して、 Microsoft Graph NuGet パッケージ をダウンロードして更新し、依存関係を更新します。Use your package manager to download and update the Microsoft Graph NuGet package and update dependencies.

  4. を使用するのではなく、を作成するようにクライアントのコンストラクターを更新し GraphServiceClient ActiveDirectoryClient ます。Update your client constructor to create a GraphServiceClient, rather than ActiveDirectoryClient. 次のコードスニペットは、アプリが AcquireTokenAsyncForUser() 新しいトークンを取得するためにメソッドを使用していることを前提としています。The following code snippets assume your app is using the AcquireTokenAsyncForUser() method to acquire new tokens. このメソッドの定義は、 dotnet-graphapi のサンプルの一部として検索できます。You can find a definition for this method as part of the active-directory-dotnet-graphapi-console sample.

    変化Change:

    ActiveDirectoryClient client = new ActiveDirectoryClient(serviceRoot,
    async () => await AcquireTokenAsyncForUser());
    

    宛先:To:

    GraphServiceClient graphClient = new GraphServiceClient(serviceRoot,
       new DelegateAuthenticationProvider(async (requestMessage) => {
          var token = await AcquireTokenAsyncForUser();
          requestMessage.Headers.Authorization = new
             AuthenticationHeaderValue("bearer", token);
       }));
    

    Microsoft Graph クライアントライブラリの場合、この serviceRoot 値にもバージョン番号が含まれています。For Microsoft Graph client library, the serviceRoot value also includes the version number. 現時点では、この値は https://graph.microsoft.com/v1.0 です。Currently, that value is https://graph.microsoft.com/v1.0.

  5. Microsoft Graph クライアント要求ビルダー構文を使用するように要求を更新するには、次のように変更します。Update requests to use the Microsoft Graph client request builder syntax, by changing:

    signedInUser = (User)await client.Me.ExecuteAsync();
    

    宛先:To:

    signedInUser = (User)await client.Me.Request().GetAsync();
    

    注意

    Azure AD Graph クライアントライブラリでは、LINQ ベースのクエリ構文がサポートされていました。The Azure AD Graph client library supported LINQ-based query syntax. ただし、Microsoft Graph クライアントライブラリにはありません。However, the Microsoft Graph client library does not. そのため、関連するクエリをより RESTful 式に変換する必要があります。Consequently, you'll need to convert the relevant queries to a more RESTful expression.

    これを行うには、次のように変更します。To do so, change:

    var groups = await
    client.Groups.Where(g => g.DisplayName.StartsWith("a")).ExecuteAsync();
    

    宛先:To:

    var groups = await
    client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();
    
  6. コードでコレクションを使用してページを作成する場合は、次の小さな調整を行います。If your code pages through collections, make the following minor adjustments. 次の例では、グループのフェッチと比較を、一度に5個ずつ、そのメンバーまでと比較します。The following example compares and contrasts fetching a group and paging through its members, 5 at a time. Azure AD Graph のコードでは、グループのメンバーをフェッチするために fetcher コンストラクトが必要ですが、Microsoft Graph にはそのような要件はありません。While the code for Azure AD Graph requires a fetcher construct in order to fetch a group's members, Microsoft Graph has no such requirement. それ以外の場合、コードは比較的似ています。Other than that, the code is relatively similar. 簡潔にするために、ユーザーメンバーのみが表示されます。 try/catch および error 条件は表示されず、コードスニペットはシングルスレッドコンソールアプリ用です。To be concise, only user members are displayed, try/catch and error conditions are not shown, and the code snippets are for a single-threaded console app.

    例として、Azure AD Graph .NET クライアントライブラリを使用して、次のコードを変更します。As an example, change the following code using the Azure AD Graph .NET client library:

    Group retrievedGroup = client.Groups.
        Where(g => g.ObjectId.Equals(id)).ExecuteAsync().Result;
    IGroupFetcher retrievedGroupFetcher = (IGroupFetcher) retrievedGroup;
    
    var membersPage = retrievedGroupFetcher.Members.Take(5).ExecuteAsync().Result;
    Console.WriteLine(" Members:");
    do
    {
        List<IDirectoryObject> members = membersPage.CurrentPage.ToList();
        foreach (IDirectoryObject member in members)
        {
            if (member is User)
            {
                User memberUser = (User)member;
                Console.WriteLine("        User: {0} ", memberUser.DisplayName);
            }
        }
        membersPage = membersPage.GetNextPageAsync().Result;
    } while (membersPage != null);
    
    

    Microsoft Graph .NET クライアントライブラリを使用して、次のコードを実行します。To the following code using the Microsoft Graph .NET client library:

    var membersPage = client.Groups[id].Members.Request().Top(5).GetAsync().Result;
    Console.WriteLine(" Members:");
    do
    {
        List<DirectoryObject> members = membersPage.CurrentPage.ToList();
        foreach (DirectoryObject member in members)
        {
            if (member is User)
            {
                User memberUser = (User)member;
                Console.WriteLine("        User: {0} ", memberUser.DisplayName);
            }
        }
        if (membersPage.NextPageRequest != null)
            membersPage = membersPage.NextPageRequest.GetAsync().Result;
        else membersPage = null;
    } while (membersPage != null);
    
    
  7. 通常、名前の変更に関連するリソース、プロパティ、ナビゲーション、およびサービスアクションのエラーを構築して修正します。Build and fix any resource, property, navigation, and service action errors, generally related to name changes.

関連項目See also

C# コンソールスニペットアプリでは、Microsoft Graph クライアントライブラリと Azure AD Graph クライアントライブラリの相違点の多くが強調されています。The C# console snippets app highlights more of the differences between Microsoft Graph client library and Azure AD Graph client library.

Azure AD Graph クライアントライブラリでは、.NET プラットフォームのみがサポートされています。The Azure AD Graph client library supports only the .NET platform. ただし、Microsoft Graph クライアントライブラリでは、ソリューションにとってより便利な追加の プラットフォームと言語 がサポートされています。However, Microsoft Graph client library supports additional platforms and languages that you may find more useful for your solutions.

次の手順Next Steps