ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

Microsoft To-Do のタスクをGolangで取得してみる

前回の記事で、Microsoft To-Doのタスクをcurlで取得してみました。
Microsoft To-Do のタスクをAPIで取得してみる - ソースコードから理解する技術-UnderSourceCode

今回はGolangでタスクを取得するコンソールアプリを作ってみました。
ビルドしてバイナリを起動すると、10秒ごとにタスクを取得し、以下のようにターミナルに出力します。

※今回もベータ版のAPIをコールしています。なので仕様変更などあったら動かなくなるかもしれません。

token unauthorized.
print tasks status, name...
completed : タスク名
notStarted : タスク名
print tasks status, name...
completed : タスク名
notStarted : タスク名

以下、このアプリの作成手順についてです。
実行環境はWindows 10 になります。(多分他のOSでも動くとは思いますが・・・)

事前準備

アプリの登録~アクセストークンの取得

前回の記事の「1. アプリの登録」「2. コードの取得」「3. アクセストークンの取得」を参考に
APIを叩くのに必要な

を取得しておきます。

環境変数の設定

取得した値を環境変数に設定します。以下のキーで登録します。

  • MS_TO-DO_CLIENT_ID ・・・ アプリケーションID
  • MS_TO-DO_ACCESS_TOKEN ・・・ アクセストーク
  • MS_TO-DO_REFRESH_TOKEN ・・・ リフレッシュトーク

プログラムの作成

今回作成したプログラムは以下になります。
https://github.com/SrcHndWng/ms-todo-sample

詳細な実装はプログラムを見てほしいのですが、流れを簡単に説明すると
1. 環境変数よりアクセストークン、リフレッシュトークンを取得する
2. アクセストークンを使ってAPIを叩いてタスクを取得する
3. 2.のレスポンスのステータスコードがUnAuthorized(401)だった場合、リフレッシュトークンを使って新しいアクセストークン、リフレッシュトークンを取得する
4. 3. で取得したトークンを環境変数に設定する
5. 新しいアクセストークンを使ってタスクを再度取得する
6. 取得したタスクをターミナルに出力する
となり、これを10秒ごとに繰り返しています。
(Ctrl + Cなどでの停止処理は今回は実装していません)

この流れがmain()に実装されています。

ちなみに、今回APIからの戻り値のJSONからGolangのstructを作成するのに、以下のサイトを使いました。
非常に使いやすく、助かりました。
https://mholt.github.io/json-to-go/

最後に

こんな感じでGolangMicrosoft To-Do のタスクを取得することができました。
以上です。