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関連

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

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

  2. Excel

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

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

  3. Excel

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

    「Microsoft GraphをVBAから呼び出してOneNoteの…

  4. Microsoft Graph

    [Google Apps Script]Office 365 unified APIを使ってメールを…

    久しぶりのGoogle Apps Scriptネタです。今回はGo…

  5. Office関連

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

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

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP