BoxはDropbox的なストレージサービスで、Businessプラン以上は容量無制限だったり

文書の暗号化が標準サポートだったりする、エンプラ向けなサービスになります。

ということで、今回はBoxのAPI(ContentAPI)の使い方を説明していきます!

SalesforceからBox APIを叩くサンプルを作っていきます。

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

OAuth2.0を利用するので、twitterやfacebook等のようにアプリケーションを設定します。

developersのサイトでログインします。

box-developer-login

boxアカウント持っている場合は、MyAppsからログインして

持っていない場合はSignUpで無料の開発者用のアカウントを作成する必要があります。

ログイン後、初めてアプリケーションを作成する場合は以下の画面が表示されるので、

そのまま「はじめに」をクリックします。(これ日本語訳が…)

box-api-app-firstapp

アプリケーション名を設定して、「アプリケーションの作成」をクリックします。

ラジオボタンは「Boxコンテンツ」のままでOK。

box-api-app-create

 

完了すると以下の画面になるので、そのまま「アプリケーションの構成」をクリックします。

box-api-app-complete

そうすると、アプリケーションの詳細画面が表示されます。

色々と設定できるのですが、大事なところはOAuth2パラメータの部分になります。

box-api-app-oauth2

BoxのAPIの認証はOAuth2.0のAuthorization Code Grantになるので

redirect_uriを設定し、client_id、client_secretをメモっておきます。

redirect_uriに関しては必須項目になりますがURI形式であればOKなので

https://localhostとかを入力して「アプリケーションの保存」で設定を保存します。

2. Salesforceの設定

ApexのSDKもあるみたいですが(dhoechst/ApexBox)、今回はNamed Credentialを使って叩いてみます。

OAuth danceをイチから実装しなくて良いから楽なんですよねー。

ということで、以下のように認証プロバイダを設定します。

box-api-sfdc-connect-app

  • 承認エンドポイントURL → https://app.box.com/api/oauth2/authorize
  • トークンエンドポイントURL → https://app.box.com/api/oauth2/token
  • コンシューマ鍵と、コンシューマの秘密
    → それぞれ1のアプリ作成時にメモったclient_id, client_secret

と、それぞれ値をセットします。

 

発行された「コールバックURL」はBoxのアプリケーションのredirect_uriにセットしておきます。

Named Credentialは以下のように設定。

box-api-sfdc-named-credential

  • URL → https://api.box.com
  • 認証プロバイダ → さっき作ったやつ
  • ID種別 → 「ユーザ」or「指定ユーザ」
  • 認証プロトコル → OAuth2.0

と、設定します。

今回は設定が楽な「指定ユーザ」の方で進めてます。

保存時に認証フローを開始にチェックをつけて、「保存」ボタンを押下すると

OAuth2.0のフローが始まるので適切なアカウントで認証/認可します。

3. Apexからコールアウトしてみる

設定が完了したら、以下のApexコードを叩きます。(ルートフォルダ情報の取得)

いい感じにJSONが返って来てたら成功です!

補足1. BoxのContentAPIの認証方式について

前述のようにOAuth2.0 Authorization Code Grant一択になります

MobileやJavaScriptなどのフロントエンドのアプリ向けにはImplicit Grant必須だと思うんですが

何故か対応しておらず、MobileのSDKはclient_secretを

アプリ側にベタに設定しちゃうような作りになっているんですが大丈夫なんですかね…。

CORSも一応対応しているようなので、なおさらImplicit Grantに対応してても良い気がします。

補足2. 開発者用トークンについて

Boxのアプリケーションの設定画面で

OAuth2パラメータのセクションで「開発者トークン」を発行できます。

こちらを利用すると、OAuth2.0のフローを踏まずに

その開発者のユーザコンテキストでaccess_tokenを発行することができます。

ちょうどtwitterにも開発者のアカウントの

永続的なaccess_tokenを発行できる機能がありますがアレと同じです。

box-api-app-accesstoken

APIの動きを確認したいときはかなり便利ですが

有効期限付きなので、期限が切れたら都度再発行する必要があります。

補足3. アプリケーションの削除について

Boxのアプリケーションは削除できないっぽいです。

削除ボタンが見つからないし、以下のようなサポートへの問い合わせが…。

https://support.box.com/hc/communities/public/questions/200268938-As-a-developer-Remove-delete-application-