Skip to content

boly38/dropbox-refresh-token

Repository files navigation

dropbox-refresh-token

NPM

Quickstart

HowTo get Dropbox refresh-token and/or access-token (console interactive mode)

npm i -g dropbox-refresh-token@latest
get_refresh_token
# follow instructions

NB: get_refresh_token binary has some alias : drt and dropbox_get_refresh_token.

NB2: if you have cloned this project you could instead invoke this with ./bin/get_refresh_token.js

Context : about Dropbox tokens

Short context about Dropbox long-lived tokens (and offline mode access).

Dropbox didn't provide anymore (since On September 30th, 2021) long-live access token from dropbox portal (src). This was the way to use token for offline applications.

Now, in order to access offline to dropbox services without having to login, you will need an offline refresh-token. And with this token you application is able to request a short-lived access token to call Dropbox API.

Here are the steps:

  1. to ask an access-code for an "offline" token-access-type
    • this step require to login to allow application access.
  2. get a (long-lived) refresh-token with this access-code.

Having this refresh-token in "offline" mode (without login requirement) you could then each time needed:

  1. (day) ask (short-lived) access-token.
  2. (day+1) ask (short-lived) access-token.
  3. (day+2) ask (short-lived) access-token.
  4. (...)

About token time to live

  • "short-lived" that apply to access-code and access-token means 14400 sec (4 hours) - this ttl is provided in dropbox response when asking for this code/token.
  • "long-lived" that apply to refresh-token (seems to) means valid until revoked (src).

references

Project features

Feature for a given DropBox app (appKey, appSecret).

  • (step 1) build login url to allow application access and then retrieve short-lived access code for an "offline" token-access-type (appKey only) getShortLivedAccessCodeUrlViaLoginUrl(appKey)
  • (step 2) provide method to call Dropbox API that ask (long-lived) refresh-token from this short-lived access code (accessCode, appKey, appSecret). getRefreshToken(shortLivedAccessCode, appKey, appSecret, logToken = false)
  • (step 3++) provide method to call Dropbox API that ask a fresh (short-lived) access token from a valid refresh-token (refreshToke, appKey, appSecret). refreshAccessToken(refresh_token, appKey, appSecret, logToken = false)

HowTo use "dropbox-refresh-token" library

  • Setup this project as dependency
npm i dropbox-refresh-token
  • Integration examples
import {
    isSet, getShortLivedAccessCodeUrlViaLoginUrl, 
    getRefreshToken, refreshAccessToken
} from "dropbox-refresh-token";

import {
    isSet, getCurrentAccount, isAccessTokenValid
} from "dropbox-refresh-token";

Another example - step-by-step to retrieve Dropbox RefreshToken

<!> original idea is FranklinThaker/Dropbox-API-Uninterrupted-Access which provide (webApplication mode)

This workflow rely on environment variables and require project install (cf. § quickstart for more modern workflow)

git clone https://github.com/boly38/dropbox-refresh-token.git
cd dropbox-refresh-token
npm install
# launch step by step to get refreshToken
node src/dropbox_refresh_token.js
# follow steps
#
# or to check if a token is valid
node src/dropbox_is_token_valid.js

Contributions

Repobeats

provided by Repobeats