クラウドストレージサービスのboxを触ってみました。
SaaSの良いところは自分でAPIを使って拡張できるところだと思いますが、 例えばboxもWebhookを使ってイベント発生時に通知を行うことができます。
- 参考) Webhookトリガー一覧
フォルダのイベントにWebhookを登録するにはBOXアプリケーションを作成する必要があります。 BOXアプリケーションには以下の2種類があり役割が違います。
- BOX統合
- boxの認証を使用してユーザが自分の権限でファイルを操作したりするアプリケーションを作成する。
- 原則、OAuthを利用したWeb画面の認証を用いる(アプリ開発者向けにトークンの発行も可能)
- BOX PLATFORM
- OAuthと別にアプリ用のユーザを作成してJWT認証も可能
- アプリのユーザがboxと連携するのでユーザにboxのアカウントを意識させない(ことも可能)
ちょっと分かりづらいかもしれませんが「BOX統合」はBOXの機能を拡張するアプリケーションで、 「BOX PLATFORM」はBOXをバックエンドとしたアプリケーションというイメージです。
今回は認証をアプリ用のユーザで行いたかったので「BOX PLATFORM」でアプリを構築します。
boxにサインアップ
まず自分のメールアドレスで「開発者」アカウントを作成します。 (*通常のサインアップと入り口が違うので注意!)
- https://account.box.com/signup/n/developer アカウントの種類が「開発者」になっていることを確認してください。
アプリケーションの作成
- 開発者コンソールからアプリを作成
- https://app.box.com/developers/console
「MyApps」 -> 「アプリの新規作成」 -> 「カスタムアプリ」で「次へ」
「JWTを使用したOAuth2.0」認証を選択。アプリの名前を適当に入力します。
以下のコマンドが出てくるので試してみます。自分が見れるフォルダの一覧が出てきたら動作検証OKです。
curl https://api.box.com/2.0/folders/0 -H "Authorization: Bearer <Developerトークン>"
作成したアプリケーションの登録
- 2段階認証の設定 アプリケーションからの認証に必要な「公開キー」を登録するには2段階認証の設定が必須です。 ユーザの設定から2段階認証の設定をします。
公開キーの作成 以下のコマンドで生成します。パスワードも設定しましょう。
openssl genrsa -aes256 -out private_key.pem 2048 openssl rsa -pubout -in private_key.pem -out public_key.pem- DeveloperConsoleで公開キーの設定 https://app.box.com/developers/console/app//configuration DeveloperConsoleに生成した公開キー(上のコマンドではpublic_key.pemで生成された方)を登録します。 アプリケーションの設定「公開キーの追加と管理」の「公開キーを追加」から中身をコピペで追加します。 公開キーを追加するとIDが自動で振られます。あとで使うのでとっておいてください。
管理コンソールでアプリケーションを承認 https://app.box.com/master/settings/openbox 「管理コンソール」 > 「Business設定」 > 「アプリ」 > 「新しいアプリケーションを承認」を選択 「APIキー」を入力するように言われるのでわかりづらいですが「クライアントID」を入れればOKです。
AppUserの作成
ここからはコードを書きます。PythonのSDKに不具合があり使えなかったのでnode.jsでやります。 box-node-sdkを使用します。 まず、SDKに認証情報を渡して初期化します。
松木佑徒