Help us understand the problem. What is going on with this article?

C#でMicrosoft Graph API呼び出し(Botからの使用)

動機

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を取得した。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away