LoginSignup
14
25

More than 5 years have passed since last update.

BOX API 使ってみた

Posted at

BOX API利用してみる

OAuthの勉強も兼ねて BOX APIを使ってみる。API利用までのステップは以下の通り

  1. ローカルウェブサーバの準備
  2. Boxのアカウント登録とアプリケーション登録
  3. ユーザーから許可を取得
  4. 許可コードからアクセスコード取得
  5. アクセスコードを使ってAPI利用

1. ローカルウェブサーバの準備

OAuthでは、ユーザからの許可(ブラウザ上で)をもらったあとの許可コードをURLのパラメータに付けて送りつける(リダイレクトする)。このためのURL(ウェブサーバ)を準備。
localhostでOKなので適当なウェブサーバを用意(Python,Ruby , NodeJSなんかで適当に)

2. Boxのアカウント登録とアプリケーション登録

  • Boxアカウントの登録。下記サイトでアカウントを作成

  • 続いてアプリケーションの登録。下記サイトへアクセス。ログインIDは上のステップで作ったもの。

ログインしたあとに"Create a Box Application"を選んでアプリケーションを定義する。ここでclient_idとclient_secretなるものを取得する。
また、許可コードを取得するためのURLとして、ローカルウェブサーバを指定する。

3.ユーザーから許可を取得

ブラウザをつかって下記のURLへアクセスする。

XXX ... 前のステップで取得した client_id
YYY ... ローカルウェブサーバのURL

許可をもとめる画面が表示される。許可ボタンをおすと 指定したURLへ飛んで行く
(ローカルウェブサーバ)URLへ飛ぶ時にパラメータ(code) がくっついてくる。このcodeの値が許可コードとなる。ということでローカルウェブサーバは、このcodeを画面に表示するなりファイルへ出力するなりする必要がある。

許可コードの有効期間は30秒と短いようです。

4. 許可コードからアクセスコード取得

前のステップで取得した許可コードをつかってアクセスコードを取得。
curlだとこんな感じ

curl https://api.box.com/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'code=ZZZ' \
-d 'client_id=XXX' \
-d 'client_secret=WWW' \
-X POST

ZZZ ... ステップ3で取得した許可コード
XXX ... ステップ2で取得したclient_id
WWW ... ステップ2で取得したclient_id

応答としてこんなのが返ってくればOK.

{"access_token":"XXXXXXXXXX","expires_in":3894,"restricted_to":[],"refresh_token":"YYYYYYYYYY","token_type":"bearer"}

5. アクセスコードを使ってAPI利用

ステップ4で取得したaccess_tokenの値をAPIに設定して、APIを利用。
ユーザ情報を取得するAPIの場合にはこんなかんじ。

curl "https://api.box.com/2.0/users/me" -H "Authorization: Bearer XXXXXXXXXX"

access_tokenの有効期限は1時間ということなので、1時間経過するまえにrefresh_tokenをつかって アクセスコードをリフレッシュする。

curl https://api.box.com/oauth2/token \
-d 'grant_type=refresh_token' \
-d 'refresh_token=YYYYYYYYYY' \
-d 'client_id=XXX' \
-d 'client_secret=WWW' \
-X POST

疑問

このやり方だとclient_secretの値を、クライアントプログラムに持たせる必要がありますね。クライアントプログラムをユーザに配っちゃうと、client_secretがバレバレになります。。。。
よいのかな?

14
25
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
14
25