LoginSignup
0
4

More than 1 year has passed since last update.

Box Java SDKで、Box APIを試してみる

Posted at

概要

BoxのWeb APIを使い、会社の業務システムからBoxのファイルを操作したいと思っています。
システム内で生成したファイルを、Boxにアップロードするイメージです。
調べてみると、各種プログラム言語のSDKがあるようなので、今回はJava SDKを使ってみようと思います。

認証をクリアする

APIを使うにはまずは認証をクリアしなければいけません。
BoxのAPIにはいくつかの認証方式が用意されていますが、今回のユースケースではJWT認証が適切だと思います。
他の認証方式については、公式ドキュメントをチェックしてください。

プログラムを書く前に、まずは認証をクリアするためにアプリケーションをBoxに登録します。

アプリケーションを登録する

基本的には下記手順の通りでOKです。
JWTを使用した設定

公開キーと秘密キーのペアのセクションでは、今回は「キーペアの生成」を選択します。

手順通り「公開/秘密キーペアを生成」を押すと、Jsonファイルがダウンロードされるので、Javaプロジェクトのクラスパスに入れておきましょう。
image.png

Java SDKを使う

インストール

SDKは、Mavenのセントラルリポジトリにありますので、簡単に利用する事ができます。

<dependency>
    <groupId>com.box</groupId>
    <artifactId>box-java-sdk</artifactId>
    <version>2.48.0</version>
</dependency>

SDKをの使い方をざっと学習するには↓を見るのが良いでしょう。
SDK Overview

以下、簡単な操作を試してみます。

セッションを接続する

先程クラスパスに入れておいたJsonファイルを読み込む事で、↓のコードで認証を済ませる事ができます。

BoxSdkTest.java
Reader reader = new InputStreamReader(BoxSdkTest.class.getClassLoader().getResourceAsStream("config.json"));
BoxConfig boxConfig = BoxConfig.readFrom(reader);
BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig);

ユーザ情報を表示する

認証を済ませたものの、今自分がログインしているユーザを知る必要があります。
Boxのファイルやフォルダは、権限のあるユーザでないと操作する事ができないからです。
下記のコードでユーザ名を表示してみましょう。

BoxUser user = BoxUser.getCurrentUser(api);
BoxUser.Info userInfo = user.getInfo();
System.out.println("userInfo : "+ userInfo.getName());

コンソールには、事前に登録したアプリケーション名が表示されたはずです。
登録したアプリケーション自身のユーザとしてログインしている状態のようです。
このユーザの事を、Boxでは「サービスアカウント」と呼んでいます。

Box APIで使用できるユーザには、いくつかの種類がありますが、今回はこのサービスアカウントを使っていく事にします。

フォルダ情報を表示する

サービスアカウントは、普通のユーザと同じように、ファイルやフォルダにコラボレータとして追加する事ができます。
「一般構成」の「サービスアカウント情報」に、サービスアカウントのメールアドレスが表示されているので、これを目的のフォルダにコラボレータとして追加してみます。


image.png


image.png


下記のようなコードで、このフォルダの情報を表示する事ができます。

BoxFolder folder = new BoxFolder(api, "***********");
BoxFolder.Info info = folder.getInfo();
System.out.format("[%s] %s\n", info.getID(), info.getName());

BoxFolderのコンストラクタに渡している***********には、フォルダIDを指定します。
フォルダIDは、目的のフォルダのURLに含まれています。https://app.box.com/folder/***********という感じになっているので、folderの次にある数字を入れてください。

ファイルをアップロードする

このフォルダに、ファイルをアップロードしてみましょう。

FileInputStream input = new FileInputStream("hoge.pdf");
BoxFile.Info newFileInfo = folder.uploadFile(input, "test.pdf");
System.out.println("https://app.box.com/file/" + newFileInfo.getID());

これで、ローカルのhoge.pdftest.pdfとして目的のフォルダにアップロードされ、コンソールには、そのURLが表示されます。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4