boxを使ったシステム構築で少しつまづいたので、忘備録も兼ねて投稿。
まずは、アプリケーションの作成。
以下の開発コンソール(※)から行う。
(※) app.box.com/developers/console/
認証方式はOAuth2
とOAuth2 with JWT
から選べる。
今回は後者を選択した。両者の説明、選択基準は公式サイトに分かりやすく纏まっている。
https://developer.box.com/docs/authentication-types-and-security
公開鍵は、手持ちのものをアップロードもできるが、今回は開発コンソールから作成した。
上記作業で、開発コンソールでの基本操作は完了。
設定ファイルを一番下にあるボタンからDLしておく(後述のサンプルで使用)。
ここで、
★つまづきポイント1
開発コンソール以外にも、管理コンソール(※)での操作も必要になる。
(※)https://app.box.com/master
自身のアカウントに権限がなければここでの操作はできないので、管理者に依頼する。
左側ペインの、「Enterprise Setting」の「Apps」タブで、上記で作成したアプリケーションを認証済みカスタムアプリケーションとして登録する。
https://app.box.com/master/settings/openbox
この登録をしておかないと、叩くAPIによって実行時エラーになる。
以上で、box側での設定は完了。
あとは、呼び出し側の作業となる。
boxアプリケーションの操作に、今回はpythonのSDKを使うことにした。
まずは、SDKのインストール。
pipで簡単に行えるが、ここで、
★つまづきポイント2
JWT形式にする場合は、[jwt]
が必要になる。
一見、なくても動くように見えるが、認証以降の操作で実行次エラーになる。
ドキュメントをよく読むとわかるのだが、見落しがちと思う。
(実際、同様のところでつまずいていると思われる人々の投稿がいくつか見つかった。)
$ pip install boxsdk[jwt] -t .
アプリケーションのトップフォルダーの下に、「hogefuga」というフォルダを作るサンプルコード。
サンプルでは、コンソールでDLした設定ファイルを、「config.json」にリネームして使っている。
from boxsdk import JWTAuth
from boxsdk import Client
auth = JWTAuth.from_settings_file('./config.json')
client = Client(auth)
root_folder = client.folder(folder_id='0')
base_dir = root_folder.create_subfolder('hogefuga')
print('base_dir: {0} {1} is named "{2}"'.format(base_dir.type.capitalize(), base_dir.id, base_dir.name))
つまづきポイントは両方とも、叩くAPIによって発生するのが厄介。。。
どちらも根本的なところなので、もう少し分かりやすくアウトプットして欲しかった。
box SDKは日本語情報も少ないので、誰かのお役に立てばこれ幸い。