🎟️

Dropbox APIトークンを取得する

2023/03/27に公開

前提

  • Dropbox APIを使用するためにはAPIトークンが必要
  • APIトークンはそれほど長くない(14400秒?)有効期限がある。無期限のAPIトークンは存在しない
  • 無期限のAPIトークンは存在しないが、リフレッシュトークン(有効期限付きAPIトークンを取得するためのトークン)は無期限である。

手順

アプリケーションを作る

自分だけが使う場合であってもこの手順は必要。
別に公開されたりするわけではないので気楽にやってOK。

https://www.dropbox.com/developers

権限はよしなに設定してください。

表示される App KeyApp Secret は後で使用するので控えておいてください。
(再表示できるのでその都度見てもOK)

リフレッシュトークンを取得する

ここはWebブラウザが必要。というよりお手元のPC等で行ってください。
この手順は、制限時間があります。一度この手順の最後まで読んでから始めた方がよいでしょう。

AppとDropboxアカウントの接続を許可する

Webブラウザから以下のURLにアクセスします。$APP_KEY は先程表示された、App Keyの値に置き換えてください。

https://www.dropbox.com/oauth2/authorize?client_id=$APP_KEY&response_type=code&token_access_type=offline

すると以下のような画面が表示されるので、続行する。をクリック

その後、アクセスコードが表示されるので表示された値を控えておきます。
多分、これは再表示できないので確実に控えておいてください。(なくしたらもう一度この手順をやれば大丈夫なはずですが)

アクセストークン等を取得する

以下のcurlコマンドを使用する。ちなみに、アクセスコードは一回しか使えないので帰ってきたJSONは確実に保存してください。(失敗したら一つ上からやり直しでOK)

  • $ACC_CODE は先程取得したアクセスコード
  • $APP_KEY はApp key
  • $APP_SEC はApp Secret

と置換してください。

curl https://api.dropbox.com/oauth2/token \
    -d code=$ACC_CODE \
    -d grant_type=authorization_code \
    -u $APP_KEY:$APP_SEC

蛇足:公式ドキュメントではredirect_uriを指定するようになっているが、指定しなくても良い。

リフレッシュトークンを使用する

以下のcurlコマンドで新しいAPIトークンを含むJSONを取得できる。

curl https://api.dropbox.com/oauth2/token \
    -d grant_type=refresh_token \
    -d refresh_token=$REFRESH_TOKEN \
    -u $APP_KEY:$APP_SECRET$

jq -r ".access_token" とすればAPIトークンを抜き出せる。

Discussion