クラウド型 ワークフロー

Office 365 とは連携できません...なんでやねん、Microsoft

Questetra は、様々なクラウドサービスとの連携(マッシュアップ)を模索してます! 第二弾、Office 365 編

 

Microsoft Office 365 は、オフィス製品として定番の Excel や Word, Powerpoint のオンライン版が使用できるクラウドサービスです。さまざまなサービスの複合体なのですが、中に、Office 文書の共有ができるストレージサービス、OneDrive for Business があります。

Questetra BPM Suite は業務プロセスの成果物としてのファイルを、自動的に Google ドライブに保存する機能を持っています。前回の Box と同じく、この部分を OneDrive for Business に置き換えて実現できないかと考え、調べてみました。Questetra BPM Suite と OneDrive for Business を仲立ちするようなプログラムを書けばできるでしょうが、あくまでQuestetra BPM Suite から 直接 OneDrive for Business の API を呼び出す形での連携方法を模索しました。

結論から言うと、今回も残念ながら、「できません」でした。今回も「できません」という報告です。

Office 365 にも API があり、REST 形式になっています。API ドキュメントを見る限り、ファイルの作成と、ファイルのコンテンツ(中身)のアップロードを、別々の HTTP リクエストで行わなければならないようです。また認証認可基盤は OAuth2 です。別々のリクエストという点が簡単ではなさそうですが、ここまでの情報からは、実現できそうな雰囲気でした。

そこで、まず OAuth2 のトークンを取得できるか試すところから始めました。Office 365 と連携するには、 Microsoft Azure のアカウントが必要になります。Azure の Active Directory 機能が、OAuth2 の機能を提供しているようです。下図の真ん中の Authentication の部分です。ところで、なぜ Azure のアカウントが必要になるんですかね。

Office 365 APIs Development Stack

不思議に思いながらも、Azure のアカウントを作成し、こちらの資料等を参考に、OAuth2 の設定を行いました。結果、アクセストークンを Azure から取り出すところまではできたのですが、残念ながら、そのトークンを Questetra BPM Suite に取り込むことができませんでした。

アクセストークンには、expires_in というプロパティがあり、この値は数値であると、OAuth2 の RFC で定義されています。本来、アクセストークンは以下のような形 (RFC から抜粋) のはずなのですが、

rfc6749-oauth-2.0-response

Azure が返すアクセストークンは、expires_in というプロパティが、以下のように「文字列」の形になっていました。。。

  "expires_in":"3600"

悲しいかな、Questetra BPM Suite で利用していたライブラリは、RFC に忠実に実装されていたため、RFC に従っていない Azure のトークンを取り込めなかった次第です。なぜ RFC と微妙に違う実装になっているんでしょうね。なんでやねん、Microsoft。

実は問題はそれだけではありませんでした。Azure の OAuth2 では、トークンを取得するのに、OAuth2 には定義されていない resource という、独自のパラメータを受け渡しする必要がありました。実は、このパラメータを受け渡しするよう、Questetra BPM Suite のソースコードを改変して実験した次第です。

resource パラメータの目的は、アクセスする API を特定するためのもののようですが、OAuth2 の RFC には、こういった目的のパラメータとして scope が定義されています。Azure の OAuth2 のやり取りでは、scope を使用しません。なぜ RFC で定義されているパラメータを使わず、独自のパラメータを定義したんでしょうね。scope だったら、ソースコードを改変する必要もないのに。なんでやねん、Microsoft。

以上が、Office 365 と連携できなかった顛末でした。

あわせて読みたい
15.野望・展望・志 の前の記事 「京都の会社」が進むべき道、「日本の会社」が進むべき道 (京都戦略)
15.野望・展望・志 の次の記事 クラウド型ワークフローを創り続ける理由
Hatanaka Akihiro の他の記事 Twilio で電話の無いコールセンター!? (ブラウザで電話を受ける編)

アーカイブ

 RSS