Microsoft Graph

Microsoft Graph .NET Client Libraryを使ったAPIの呼び出しサンプル

下記記事でMicrosoft GraphのPHP用SDKを紹介しましたが、今回は.NET用のライブラリを使って、Graph APIを呼び出してみたいと思います。

テスト環境

アプリケーション IDの取得

APIを呼び出すにあたり、まずはアプリケーションID(クライアントID)を準備します。

  1. v2.0エンドポイントを使用するため、Application Registration Portalにアクセスし、Microsoft アカウントでサインインします。
  2. アプリの追加」ボタンをクリックします。
  3. Register your application画面が表示されたら、アプリケーション名や連絡先を入力して、「Create」ボタンをクリックします。
  4. アプリケーションの登録画面が表示されたら、「アプリケーション ID」(クライアントID)をコピーしておきます。
  5. プラットフォームの追加」ボタンをクリックして、「ネイティブ アプリケーション」を追加します。
  6. Microsoft Graph のアクセス許可」は「Mail.Send」、「User.Read」にします(必要に応じてここでスコープ設定)。
  7. 保存」ボタンをクリックして、アプリケーションの設定を保存します。

.NET用ライブラリの準備

今回はVisual Studioを使わないので、コマンドライン版のNuGetを使って、必要なライブラリをインストールします。

nuget install Microsoft.Graph
nuget install Microsoft.Identity.Client -PreRelease
nuget install Newtonsoft.Json -Version 6.0.8

Microsoft Graph .NET Client LibraryによるAPIの呼び出し

準備が整ったので次はいよいよコードを書いていくわけですが、コードを書く前に下記参照を追加しておきます。

  • Microsoft.Graph.dll
  • Microsoft.Graph.Core.dll
  • Microsoft.Identity.Client.dll
  • Newtonsoft.Json.dll
  • System.Net.Http
Program.cs

※ コード内のアプリケーション IDとメールの宛先は変更する必要があります。

using System;
using System.Collections.Generic;
using System.Net.Http.Headers;
using System.Net.Http;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Graph;
using Microsoft.Identity.Client;

namespace ConsoleAppForMSGraph
{
    class Program
    {
        //※必要に応じて変更
        static string appId = "(アプリケーション ID)";
        static string[] Scopes = {"User.Read", "Mail.Send"};
        
        static PublicClientApplication IdentityClientApp = new PublicClientApplication(appId);
        static string UserToken = null;
        static GraphServiceClient graphClient = null;
        
        public static void Main(string[] args)
        {
            graphClient = GetAuthenticatedClient();
            if (graphClient != null)
            {
                var user = graphClient.Me.Request().GetAsync().Result;
                List<Recipient> recipientList = new List<Recipient>();
                recipientList.Add(new Recipient{EmailAddress = new EmailAddress{Address = "mailto@hogehoge.hoge"}}); //宛先
                var email = new Message
                {
                    Body = new ItemBody
                    {
                        Content = "こんにちは! " + user.DisplayName + " さん",
                        ContentType = BodyType.Text
                    },
                    Subject = "TEST MAIL",
                    ToRecipients = recipientList
                };
                graphClient.Me.SendMail(email, true).Request().PostAsync();
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
        
        public static GraphServiceClient GetAuthenticatedClient()
        {
            try
            {
                graphClient = new GraphServiceClient(
                    "https://graph.microsoft.com/v1.0",
                    new DelegateAuthenticationProvider(
                        async (requestMessage) =>
                        {
                            var token = await GetTokenForUserAsync();
                            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
                        }
                    )
                );
                return graphClient;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Could not create a graph client: " + ex.Message);
            }
            return graphClient;
        }
        
        public static async Task<string> GetTokenForUserAsync()
        {
            AuthenticationResult authResult = await IdentityClientApp.AcquireTokenAsync(Scopes); //ユーザー操作要
            UserToken = authResult.AccessToken;
            return UserToken;
        }
    }
}

上記コードを実行すると、Microsoft アカウントのサインイン画面が表示されるので、サインインを行います。

コンセントUIが表示されるので、「はい」ボタンをクリックして、アクセスを許可します。

APIの呼び出しが無事に行われれば、指定した宛先にメールが届きます。

以上のように、専用のライブラリを使うことで、簡単なコードでMicrosoft GraphのAPIを呼び出すことができます。

泥臭くAPIを呼ぶこともできますが、ライブラリが用意されているのであれば、それを使った方が良いでしょう。

関連記事

  1. Office関連

    Microsoft Graph SDK for PHPを使ったAPIの呼び出しサンプル

    知らない間に(恐らくBuild 2017のタイミングに合わせて)Mic…

  2. Excel

    Excel REST APIをPowerShellから呼び出す方法

    以前Excel REST APIをVBAから呼び出す方法を紹介しました…

  3. Office関連

    Office 365 unified APIをVBAから呼び出す

    前回の記事で、VBAからOffice 365 APIを呼び出す手順につ…

  4. Office関連

    Office 365 unified APIをJavaScriptだけで呼び出す

    Microsoftの松崎さんのブログに下記の記事がありました。…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP