今回は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アプリで、[その他オプション>その他の操作] からアプリを選択すると

以下のようなプロンプトが表示されます。

box-api-webapp-integration-prompt-view

このプロンプトでOKを押下すると任意のエンドポイントにHTTPリクエストが飛ばされ

エンドポイント側でHTTPリクエストに応じた処理を行うことで

Boxのファイル情報を使って外部Webアプリ連携が出来るようになる仕組みです。

1. アプリケーションの設定

Boxのアプリケーションで「新しいWebアプリ統合を作成」ボタンをクリックします。

box-api-new-webapp-integration

名前と説明は必須なので適当に入力します。

box-api-webapp-integration-info

プロンプトのメッセージとプロンプトで入力する項目を設定します。

入力項目は必須ではないですが、入力値をコールバックのパラメータとして含めることができるため

入力項目を利用することで処理に柔軟性を持たせることが出来ます。

box-api-webapp-integration-prompt

コールバック構成ではコールバック先のエンドポイントやコールバックの方式を指定します。

box-api-webapp-integration-callback-info

また、ユーザ体験の項目で「ポップアップが表示されます」を選択すると

プロンプトで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対策が出来なさそうなのが、すこし不安)

box-api-webapp-integration-callbackparams

Webhookのときと違って、こちらではBasic認証を使うことができ…そうですが

試してみたところ、プロンプト型、サーバ側での実行に関わらず入力した情報が

Authorizationヘッダに格納されておりませんでした。

リファレンスには認証の記載がなかったので利用方法が違うのか

まだ実装が完了してないのかもしれません。

box-api-webapp-integration-authentication

2. ユーザのアプリケーション設定

https://app.box.com/appsのアプリケーション画面から「マイアプリケーション」を選択

box-api-webapp-integration-apptop

自分が作成したアプリケーションの詳細画面で「Webアプリ統合」のチェックを入れれば設定完了。

box-api-webapp-integration-enabled

これで、「その他の操作」から設定したアプリケーションを実行することができます。

box-api-webapp-integration-testapp