Box Python SDK — 3分でゼロから最初のリクエストを行うまで

--

Image by fanjianhua on Freepik

OAuth 2.0を使用して、3分以内にBox Python SDKを利用できるようにしましょう。

私は、開発者が可能な限り迅速にBox Platformの使用を開始できるようにする方法を探していました。

Boxには多くの認証方法が用意されていますが、無料の開発者アカウントに関わる最近の出来事により、Boxでは、新規の無料開発者アカウントオプションを制限せざるを得なくなりました。

そのため、すぐにAPI へのリクエストの送信を開始できるように、OAuth 2.0 が組み込まれたPythonテンプレートアプリケーションを作成することにしました。

無料のBox Individualアカウントの作成

個人向けのサインアップページに移動し、自分の情報を入力して送信します。

クレジットカードは必要ありません。

無料のBox Individualアカウントの登録ページ

登録プロセスを完了させて、メールを確認します。

ヒント: 既にgmail.comのアカウントを所有していて、このためだけに新規アカウントを作成したくない場合は、your.normal.email+box@gmail.comのようなアカウントを使用できます。

また、この方法を使用すると、同じメールアドレスで無料のBoxアカウントを複数作成でき、さらにそれらを区別することができます。

ログインすると、次のように表示されます。

Box.comでの初回ログイン

この時点では、開発者コンソールのメニュー項目がまだ表示されていません。

最初のBoxアプリの作成

次のリンクを使用して開発者コンソールに移動します: https://app.box.com/developers/console

アプリが存在しないBox開発者コンソール

新しいアプリを作成し、[カスタムアプリ] を選択します。

新しいアプリケーションの初期オプション

アプリに関する情報を入力し、[次へ] をクリックします。

[ユーザー認証 (OAuth 2.0)] を選択し、[アプリの作成] をクリックします。

[構成] タブで [リダイレクトURI] セクションまで下にスクロールし、ユーザーの承認プロセス後にブラウザのリダイレクト先となるURLを入力します。このアプリケーションの場合、デフォルトではhttp://127.0.0.1:500/callbackとなっていますが、個々のニーズに合わせてカスタマイズできます。

リダイレクトURIの設定

そのまま [構成] タブで下にスクロールし、希望するアプリケーションスコープを選択するか、すべてのアプリケーションスコープを選択した後、[変更を保存] をクリックします。

アプリケーションスコープの選択

「マイアカウント」に戻ると、開発者コンソールにアクセスするための新しいメニュー項目が有効になっていることがわかります。

無料の開発者アカウントにアップグレードされた無料のBoxアカウント

以上です。開発者コンソールに戻り、クライアントIDやその他の情報を取得する必要があるため、この画面は開いたままにしておいてください。

PythonテンプレートのOAuth 2.0アプリケーションの使用

このサンプルアプリケーションを使用すると迅速に作業を開始できるようになり、シンプルなPythonスクリプト、Flask、FastAPIなど何でも作成できます。

このアプリケーションにはOAuth認証フローの基本が含まれており、ユーザーの承認のためにウェブブラウザを開き、承認プロセスを完了するために1つのHTTPリクエストをリッスンします。

承認トークンと更新トークンの両方がローカルディスク上のファイルに暗号化されずに格納されるため、注意してください。

承認トークンの有効期間は60分で、自動的に更新されます。

更新トークンの有効期間は60日で、期限切れにならない限り、アプリはユーザーに対して、Boxでアプリケーションを再承認するよう求めることはありません。

何もできなくなった場合は、トークンファイルを削除してやり直すだけです。

開発者トークンを使用しない理由

アプリの構成の詳細で、開発者トークンをアクティブ化し、使用することはできますが、

開発者トークンは有効期間が60分のため、コーディングセッションが長い場合にはあまり実用的でないことがわかっています。開発者は、開発者コンソールでそのトークンを明示的に更新することをよく忘れ、APIでエラーが発生するようになります。ご自身が使いやすいと思うものをご利用ください。

サーバー側の認証を使用しない理由

Box Platformでは、サーバー側の認証用にクライアント資格情報許可 (CCG) とJSONウェブトークン (JWT) がサポートされています。

ただし、現在 (2023年5月) Boxでは、新規の無料開発者アカウントに対してこの機能を一時的に無効にしています。詳細については、こちら (英語) をご確認ください。

古い開発者アカウントを所有していて管理コンソールにアクセスする場合、または企業アカウントを使用している場合は、影響を受けることなく、任意のタイプの認証を使用できます。

Pythonテンプレートのアプリケーションの設定

このアプリケーションは、こちらのGitHubリポジトリにあります。

このリポジトリを複製するか新しいリポジトリを作成したら、Python環境の設定の手順に従います。

また、.env.sampleファイルを.envにコピーし、アプリケーションの構成にある情報をそのファイルに設定する必要もあります。

CLIENT_ID = YOUR_CLIENT_ID
CLIENT_SECRET = YOU_CLIENT_SECRET
CALLBACK_HOSTNAME = 127.0.0.1
CALLBACK_PORT = 5000
REDIRECT_URI = http://127.0.0.1:5000/callback

コールバックのホスト名、ポート、リダイレクトURIはカスタマイズできますが、開発者コンソールで入力されている構成と一致させる必要があります。

簡単なテストを実行できます。

初めてアプリを実行すると、ブラウザが開き、ユーザーはBoxでアプリケーションを承認するよう求められます。

その後、アプリは現在のユーザーの詳細をログに記録し、ルートフォルダのコンテンツのリストを取得します。

これ以降、更新トークンが期限切れにならない限り、ユーザーは再度承認を求められることはありません。

アプリの動作をご覧ください。

動作中のアプリ

Box Platform SDKをお楽しみください。

--

--