LoginSignup
3
4

More than 3 years have passed since last update.

Box APIをcurlで叩く

Last updated at Posted at 2020-10-15

CLI だけだとよくわからんので curl で直接叩いて試す。

現在のユーザーを取得

一番簡単なやつだけど、トークンどうやって取得するのか?ってなるよね。

% curl -i -X GET 'https://api.box.com/2.0/users/me' --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxx'

トークンの取得

OAuth 2.0

OAuth 2.0 でトークン取得する方法は UI 通るので、curl だけではしんどそう。

とりあえず、トークンだけ作ってしまうほうが楽。(なんかしらGUI使わずに出来る方法があれば更新します。)

とりあえず流れとしては、
https://ja.developer.box.com/guides/authentication/oauth2/without-sdk/
に書いてある方法で対応すれば良い。

  1. 承認URLにブラウザなどでアクセス
  2. 必要に応じてユーザー認証
  3. アクセスを許可する
  4. リダイレクトされたURLからコードを取得
  5. アクセストークンを作成

承認URL

承認URL は下記のような形式

https://account.box.com/api/oauth2/authorize?response_type=code&client_id=[client id]

client_id には開発者コンソールの
構成 > OAuth 2.0資格情報 > クライアントID
の値をセット。

クライアントID

承認URLにアクセスしコードを取得

上記のURL にブラウザでアクセスし「Boxへのアクセスを許可」ボタンをクリックする。

許可ボタン

許可ボタンを押すとリダイレクトURI にコードが付いた状態でリダイレクトされるのでコードを取得する

https://developer.box.com/auth/callback/?code=xxxxxxxxxxx

こんな感じで、リダイレクトURI に code= にコードが入ってくるので取得。

コードからトークンに変換

curl -i -X POST "https://api.box.com/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "client_id=[CLIENT_ID]" \
     -d "client_secret=[CLIENT_SECRET]" \
     -d "code=[CODE]" \
     -d "grant_type=authorization_code"

[CODE] に先程のコードを入れて、
[CLIENT_ID] と [CLIENT_SECRET] は先程と同様に
構成 > OAuth 2.0資格情報 > クライアントID
から取得した値をセット。

レスポンスにトークンが含まれているのでそれを使って API を実行する。

JWT

CLI 使う方法が楽。

% box tokens:get

上記のコマンドでトークンが返却されるのでそれを使って API を叩く。

3
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
3
4