GraphAPI経由でのOffice 365 レポートをFlowで取得する
第23回 Office 365 勉強会で発表した内容の続きです。発表した内容はこちら。
このブログエントリではFlowによる情報収集を説明します。
- GraphAPI経由でのレポートが一番有用だが、レポート取得するのにひと手間かかる
- Flowで取得する事で、日次データ取得が簡易になる
作業1. アプリケーション登録
Azure AD Portalからアプリケーションを登録し、GraphAPI経由でデータを取る準備をします。手順は割愛…。リファレンスの通り、レポートを取得する際はReports.Read.All権限でOKです。
作業2. Flowでの取得
本題。レポート取得のためのFlowを作成します。
1. GraphAPIにアクセス
URI欄に取得対象のGraphAPIのURLを入力します。FlowでHTTPリクエストアクションを追加し、Active Directory Oauthを選択。作業1. で登録したアプリケーションの情報を登録します。
2. 戻り値の解析
- で指定したAPIの戻り値がJSON形式となるので解析します。スキーマはこちら。
{
“type": “object",
“properties": {
“Transfer-Encoding": {
“type": “string"
},
“request-id": {
“type": “string"
},
“client-request-id": {
“type": “string"
},
“x-ms-ags-diagnostic": {
“type": “string"
},
“Duratio": {
“type": “string"
},
“Strict-Transport-Security": {
“type": “string"
},
“Cache-Control": {
“type": “string"
},
“Date": {
“type": “string"
},
“Location": {
“type": “string"
},
“Content-Type": {
“type": “string"
},
“Content-Length": {
“type": “string"
}
}
}
自分で調べるときは、GraphAPIのリファレンスを見る、GraphExplorerから動かしてみる(一番かんたん、おすすめ)、ひとまずFlowでGraphAPIをたたいて戻り値を全部確認するなどの方法があります。
3. 実データにアクセス
戻り値内にあるLocationに実データへのアクセスURLが記載されているので、HTTPアクセスを行います。
4. Flow実行条件の修正
“OAuth認証してトークン取得”のHTTPステータスコードは302だが、Flowの仕様としてエラー扱いとなるので、エラーでも次のステップを実行するよう設定を変更します。
GraphAPIの仕様上、データへのアクセスを試み、認証が成功した場合、直接データはダウンロードできず、HTTPステータスコード302とともに“データがダウンロード可能な一時的なURL”が生成される。PowerShellやPostman、ブラウザは302に対応して自動的にリダイレクトされるが、Flowはしていないため、今回のような手順を作成している。
5. 動作確認
Flowで設定した定期的なスケジュールでユーザーデータのダウンロードが可能となりました。
参考にしたページ
- 302リダイレクトの話
- Active Directory Oauthの話
- Active Directory Oauthが実装される以前の話(Active Directory Oauthが実装される前はFlowでBarrer Tokenを取得する必要があったが、 Active Directory Oauthを利用する事で不要となった。)
ディスカッション
ピンバック & トラックバック一覧
[…] GraphAPI経由でのOffice 365 レポートをFlowで取得する […]