Python で BOX へ JWT 認証ログインするサンプルスクリプト
Python から BOX へアクセスする方法は以下などが考えられます。
No. | 方法 | GitHub ページ | 補足 |
---|---|---|---|
1 | REST API を直接、呼び出す | - | 抽象化されていない為、利用がやや大変 |
2 | Pythoh SDK を利用する | Box Python SDK | サポート終了予定 |
3 | Python SDK (Generated) を利用する | Box Python SDK GENERATED | 今後の主流? |
2 番目の Python SDK は Python SDK (公式サポート終了) のインストール ページで以下のように記載されており、サポート終了予定です。 今後、積極的に利用するのは躊躇われます。
Python SDKは、現在メンテナンスモードであり、まもなく公式サポートが終了する予定です。つまり、実装されるのは重要なセキュリティ更新プログラムとバグ修正のみになります。自動生成されたPython SDKを使用することをお勧めします。
3 番目の Python SDK (Generated) は Python SDK (Generated) のインストール ページで以下のように記載されています。
Pythonプロジェクトでは、自動生成されたBox Python SDKを使用してBox APIを呼び出すことができます。この次世代のSDKには、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的とした新機能が備わっています。
今回は Python SDK (Generated) を利用し、Python から Box へ JWT 認証ログインするサンプルスクリプトをメモしておきます。
検証環境¶
対象 | バージョン |
---|---|
macOS | 15.3 |
Python | 3.12.9 |
box-sdk-gen | 1.11.0 |
サンプルスクリプト¶
Box の開発者コンソール から JWT 認証用のトークンを発行し、それを使って Box へログインします。 15 〜 17 行目が Box へのログイン処理です。 ログイン処理とは関係ありませんが、オマケとして get_items()
を使って再起的に Box 上のコンテンツを取得し、tabulate で表形式にして表示します。
sample.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
実行例¶
実行例は以下の通りです。
% python sample.py
ID Name Type
------------- ----------- --------------------------
306880316631 dir1 FolderBaseTypeField.FOLDER
306879296765 dir1-1 FolderBaseTypeField.FOLDER
1774174122895 file1-1.txt FileBaseTypeField.FILE
306879422332 dir1-2 FolderBaseTypeField.FOLDER
1774180093821 file1-2.txt FileBaseTypeField.FILE
306878337515 dir1-3 FolderBaseTypeField.FOLDER
1774171247666 file1-3.txt FileBaseTypeField.FILE
306878910448 dir2 FolderBaseTypeField.FOLDER
306880888369 dir2-1 FolderBaseTypeField.FOLDER
1774174859122 file2-1.txt FileBaseTypeField.FILE
306880995730 dir2-2 FolderBaseTypeField.FOLDER
1774179457812 file2-2.txt FileBaseTypeField.FILE
306880934049 dir2-3 FolderBaseTypeField.FOLDER
1774183905340 file2-3.txt FileBaseTypeField.FILE
306881075195 dir3 FolderBaseTypeField.FOLDER
306878378334 dir3-1 FolderBaseTypeField.FOLDER
1774181835798 file3-1.txt FileBaseTypeField.FILE
306880638490 dir3-2 FolderBaseTypeField.FOLDER
1774180700656 file3-2.txt FileBaseTypeField.FILE
306878829521 dir3-3 FolderBaseTypeField.FOLDER
1774177298106 file3-3.txt FileBaseTypeField.FILE