結論
DropboxAPIのAccessTokenは一定期間でリセットされアクセス出来なくなる。
毎回AccessTokenを発行しなおすのは面倒なので、RefreshTokenを発行し接続することで回避する。
AccessTokenの発行方法(一応)
ここにアクセスし、アプリを作成 or 右上のAppConsoleから選択
permissonから必要な権限を有効化し、ダッシュボードのsetting/Oauth2/GenerateAccessToken
で発行する。
AccessTokenでの利用方法
import dropbox
dbx = dropbox.Dropbox(`<ACCESS TOKEN>')
RefreshTokenの発行方法
まずはauthorization_codeを取得する。(後で<AUTHORIZATION_CODE>
に入力する)
ダッシュボードのsetting
にあるApp keyとApp secretを控える。
以下のURLの''を自分のAppkeyに変更しアクセスする。
https://www.dropbox.com/oauth2/authorize?client_id='<Appkey>'&token_access_type=offline&response_type=code
認証画面みたいなものが出るので進み、最後の画面にあるauthorization_codeを控える。
次にPostmanを利用してRefreshTokenを取得する。
以下を用いてPOSTする。
- Request URL
-
AuthorizationType
Basic Auth
Username = '<Appkey>'
Password = '<Appsecret>'
-
Body
x-www-form-urlencoded
key | value |
---|---|
code | '/AUTHORIZATION_CODE/' |
grant_type | authorization_code |
成功すると以下のようなJson形式の返答がある。これのrefresh_tokenがそれ。
{
"access_token": "sl.****************",
"token_type": "bearer",
"expires_in": 14400,
"refresh_token": "*********************",
"scope": <SCOPES>,
"uid": "**********",
"account_id": "***********************"
}
RefreshTokenでの利用方法
import dropbox
dbx = dropbox.Dropbox(app_key='<Appkey>', app_secret='<Appsecret>',
oauth2_refresh_token='<Refreshtoken>')
おまけ:ファイルのやり取り
# Dropboxからlocalに
with open('<Local上でのPATH>', "wb") as f:
metadata, res = dbx.files_download(path=’<Dropbox上でのPATH>’)
f.write(res.content)
# localからDropboxに(追記ではなく上書き)
dbx.files_upload(open('<Local上でのPATH>', "rb").read(), ’<Dropbox上でのPATH>’, mode=dropbox.files.WriteMode.overwrite)
参考文献