今回はBox APIのWebアプリ統合機能を試してみます。
Webアプリ統合とは、BoxのWebアプリに対する拡張機能になります。
BoxのWebアプリ上で任意のファイルで [その他オプション>その他の操作] から
ファイルに応じたアクションをすることが可能になります。
SalesforceだとSend To Chatterという、BoxのファイルリンクをChatter投稿するような
アプリケーションが公開されています。
参考URL→https://box-content.readme.io/docs/box-web-application-integrations
0. Webアプリ統合の仕組み
BoxのWebアプリで、[その他オプション>その他の操作] からアプリを選択すると以下のようなプロンプトが表示されます。
このプロンプトでOKを押下すると任意のエンドポイントにHTTPリクエストが飛ばされ
エンドポイント側でHTTPリクエストに応じた処理を行うことで
Boxのファイル情報を使って外部Webアプリ連携が出来るようになる仕組みです。
1. アプリケーションの設定
Boxのアプリケーションで「新しいWebアプリ統合を作成」ボタンをクリックします。名前と説明は必須なので適当に入力します。
プロンプトのメッセージとプロンプトで入力する項目を設定します。
入力項目は必須ではないですが、入力値をコールバックのパラメータとして含めることができるため
入力項目を利用することで処理に柔軟性を持たせることが出来ます。
コールバック構成ではコールバック先のエンドポイントやコールバックの方式を指定します。
また、ユーザ体験の項目で「ポップアップが表示されます」を選択すると
プロンプトでOKを押したあとの処理が別ウィンドウ(or別タブ)を立ち上げて
そのウィンドウ内でiframe読み込み(ホスト側はboxのWebアプリ)で呼び出されます。
現時点ではiframe読み込みではGETリクエストになる仕様のようなので
RESTのURLパラメータ(Get)でしかパラメータを渡すことが出来ません。
「サーバ側でのみ実行されます」はBoxがサーバ間で通信をしてくれる方式になり
この場合はRESTのPostパラメータとXML, SOAPが利用できます。
※ポップアップでもPOSTリクエストをする、という記述があるのですが確認できず…
コールバックパラメータの指定の方法はWebhookのときと同じです。
パラメータの値にOAuth2.0のAuthorization Code(scopeは対象のファイルアクセス権限のみ)
やfileのBase64値を含めることができます。
Authorization Codeを含める場合は、リクエストを受け取ったコールバック先が
code値をaccess_token, refresh_tokenに変換する必要があります。
(仕組み上、State値を使ったCSRF対策が出来なさそうなのが、すこし不安)
Webhookのときと違って、こちらではBasic認証を使うことができ…そうですが
試してみたところ、プロンプト型、サーバ側での実行に関わらず入力した情報が
Authorizationヘッダに格納されておりませんでした。
リファレンスには認証の記載がなかったので利用方法が違うのか
まだ実装が完了してないのかもしれません。
2. ユーザのアプリケーション設定
https://app.box.com/appsのアプリケーション画面から「マイアプリケーション」を選択自分が作成したアプリケーションの詳細画面で「Webアプリ統合」のチェックを入れれば設定完了。
これで、「その他の操作」から設定したアプリケーションを実行することができます。