動機
Bot FrameworkでOffice365の会議室予約とかをするためにMicrosoft Graph APIを呼び出す必要があった。
**実際の開発ではGraph APIライブラリがあるのでそちらを使えばいいが、**テストコードを書いていてライブラリの導入をするほどでもなかったので自分で書いてみた。
コード
using (var client = new HttpClient())
{
var url = "https://graph.microsoft.com/v1.0/me";
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
var response = await client.GetStringAsync(url);
JObject json = JObject.Parse(response);
var hogehoge = json.GetValue("hogehoge");
Console.WriteLine(hogehoge);
}
意外にはまったのがリクエストヘッダーにAuthorizationを追加するときに[Bearer]と実際のaccessTokenの間にスペースを入れる必要があるということ。
!実際にプロダクトに組み込む際はHttpClientをusingで囲って生成と破壊を繰り返してはいけません!
[参考]HttpClientをusingで囲わないでください
AccessTokenの取得
上のコードでAccessTokenも一緒に渡す必要があるので、APIを呼び出す前にAccessTokenを取得する必要がある。
詳しくはここに書いてあるが、Botからの認証方法は何がいいのか検索したところMagic codeを使用したBotからのユーザー認証のページを見つけたのでMagic codeを使おうと思い、さらに検索したところAuthBotというライブラリを見つけたのでこれを使ってAccessTokenを取得した。