DropboxのAPI
2021/12/14
OAuth, webservice
問題
システム用(アプリ用)にずっと使えるAPIキーを取得したいです。
答え
1.アプリを作る
https://www.dropbox.com/developers

2.アプリの設定、権限を付与
手動でトークンを取得する場合は、OAuth 2 Redirect URIs は設定しなくても対応可能。
権限はファイルを作りたいとか、見るだけでいいとか、用途に応じて必要な権限を付与。
3.アクセスコードを取得
ブラウザで以下にアクセス。
https://www.dropbox.com/oauth2/authorize?client_id=XXXXXXXXXXXXXXX&&response_type=code&token_access_type=offline
client_id はアプリの App key。
redirect_uri は設定していないなら空欄にする → www.dropbox.com の画面にリダイレクトされる。
設定したのなら、設定値を redirect_uri=~~ に指定。
redirect_uri を指定しなかったら最終的に下図のようになる。

有効期限があるので早めに次の手順へ。
4./oauth2/token する
取得したアクセスコードを使用して以下をリクエストする。
アクセスコードを AUTHORIZATION_CODE に入れる。
curl https://api.dropbox.com/oauth2/token \
-d code=<AUTHORIZATION_CODE> \
-d grant_type=authorization_code \
-d redirect_uri=<REDIRECT_URI> \
-u <APP_KEY>:<APP_SECRET>
redirect url を登録していないなら省略。
curl https://api.dropbox.com/oauth2/token \
-d code=<AUTHORIZATION_CODE> \
-d grant_type=authorization_code \
-u <APP_KEY>:<APP_SECRET>
JSONでアクセストークン access_token とリフレッシュトークン refresh_token などが返ってくる。
access_token は有効期限まで使える。
5.アクセストークンが期限切れになったらリフレッシュトークンで再取得する
システム(アプリ)はリフレッシュトークンを保存しておいて、アクセストークンが期限切れになったら再取得するようにする。
curl https://api.dropbox.com/oauth2/token \
-d grant_type=refresh_token \
-d refresh_token=<REFRESH_TOKEN> \
-u <APP_KEY>:<APP_SECRET>
有効期限14400秒(=4時間)のアクセストークンが再発行される。