1
Help us understand the problem. What are the problem?

posted at

updated at

DropboxAPIのAccessToken&RefreshToken備忘録

結論

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 keyApp secretを控える。

以下のURLの''を自分のAppkeyに変更しアクセスする。
https://www.dropbox.com/oauth2/authorize?client_id='<Appkey>'&token_access_type=offline&response_type=code

認証画面みたいなものが出るので進み、最後の画面にあるauthorization_codeを控える。

次にPostmanを利用してRefreshTokenを取得する。
以下を用いてPOSTする。

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)

参考文献

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?