下記記事でMicrosoft GraphのPHP用SDKを紹介しましたが、今回は.NET用のライブラリを使って、Graph APIを呼び出してみたいと思います。
テスト環境
- Windows 10 Pro x64
- SharpDevelop 4.4
- Microsoft アカウント
アプリケーション IDの取得
APIを呼び出すにあたり、まずはアプリケーションID(クライアントID)を準備します。
- v2.0エンドポイントを使用するため、Application Registration Portalにアクセスし、Microsoft アカウントでサインインします。
- 「アプリの追加」ボタンをクリックします。
- Register your application画面が表示されたら、アプリケーション名や連絡先を入力して、「Create」ボタンをクリックします。
- アプリケーションの登録画面が表示されたら、「アプリケーション ID」(クライアントID)をコピーしておきます。
- 「プラットフォームの追加」ボタンをクリックして、「ネイティブ アプリケーション」を追加します。
- 「Microsoft Graph のアクセス許可」は「Mail.Send」、「User.Read」にします(必要に応じてここでスコープ設定)。
- 「保存」ボタンをクリックして、アプリケーションの設定を保存します。
.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を呼ぶこともできますが、ライブラリが用意されているのであれば、それを使った方が良いでしょう。





























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