筆記 Dropbox 如何取得永久 API Access Token

posted in: computer, 筆記 | 0

筆記 Dropbox 如何取得永久 API Access Token

說明

有使用到 Dropbox API 做自動化的,都會到後台拿 API access token

但是從 2020/10 月開始,Dropbox 取消原本永久 access token 的制,從後台 app console 產生的 token 是 short lived token,只能使用 4 小時,token 開頭會是 “sl.”,而且很長一串,如果要用 token 需要走 oauth 2.0 機制取得

解決方式

申請一個 refresh token 也叫 long lived access token,每次呼叫 API 時再用 refresh token 去申請 4個小時的 short lived token.

long lived token 也叫做 refresh token,可以用手動操作取得

操作步驟概要

  1. 用網頁開始授權,取得 access code (需要 App key)
  2. 用 curl 或其他方式,取得 refresh token (需要 1. 的 access code, App key, App secret )
  3. 用 curl 取得 short lived token (需要 2. 的 long lived access token)

詳細操作細節

取得 Access Code

開啟以下網頁,先取得 access token,APP_KEY 是 dropbox APP 的 App key 欄位


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

按一些警語、確認,允許權限後,會出現如下畫面,把那一串亂碼複制起來。取得 access code

取得 Long Lived Access Token ( refresh token )

使用 curl 取得 Refresh token

ACCESS_CODE 是前一步取得的亂數

APP_KEY, APP_SECRET 是 Dropbop App 後台取得

curl --location --request POST 'https://api.dropboxapi.com/oauth2/token' \
-u '<APP_KEY>:<APP_SECRET>'
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'code=<ACCESS_CODE>' \
--data-urlencode 'grant_type=authorization_code'

然後你會得到一串沒有 sl. 的 refresh token

取得 Refresh Token (Short Lived Access Token)

一樣用 curl 示範,其他程式碼請自行轉換

APP_KEY, APP_SECRET 是 Dropbop App 後台取得

REFRESH_TOKEN 由前一步驟取得

curl --location --request POST 'https://api.dropboxapi.com/oauth2/token' \
-u '<APP_KEY>:<APP_SECRET>' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'refresh_token=<REFRESH_TOKEN>' \
--data-urlencode 'grant_type=refresh_token'

你會得到一個如下的 json,那個 access_token 就是你要的東西了


{
  "access_token": "sl.BSeXsLuhuLjQPntvlOWaFv2sWGSLdWf25k9qxzygyrCjfv4FjafdffdsfsdfsdfsdfPXFc-OKi8",
  "token_type": "bearer",
  "expires_in": 14400
}

參考文件

Dropbox Developer HTTP Document

https://www.dropbox.com/developers/documentation/http/documentation