未測試
從 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,可以用手動操作取得
操作步驟概要
- 用網頁開始授權,取得 access code (需要 App key)
- 用 curl 或其他方式,取得 refresh token (需要 1. 的 access code, App key, App secret )
- 用 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
}