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を呼ぶこともできますが、ライブラリが用意されているのであれば、それを使った方が良いでしょう。

【ワールドネバーランド】Switchでまったり箱庭ゲーム!前のページ

【ワールドネバーランド】序盤のお金稼ぎスポット(Switch)次のページ

関連記事

  1. Microsoft Graph

    [Google Apps Script]Microsoft Graph APIを使ってMicroso…

    Microsoft Graph APIを使って、OneDriveにある…

  2. Microsoft Graph

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

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

  3. Office関連

    Office365APIEditorでMicrosoft Graph APIを手軽に呼び出し!

    下記Tech Communityの記事で、Microsoftのエンジニ…

  4. Office関連

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

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

  5. Microsoft Graph

    [Microsoft Graph]バッチ処理を試してみました。

    先日公開された下記動画を見て、面白そうだったのでMicrosoft G…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP