Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 40 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,30 @@

[![NPM](https://nodei.co/npm/dropbox-refresh-token.png?compact=true)](https://npmjs.org/package/dropbox-refresh-token)

## Quickstart

## 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](https://dropbox.tech/developers/migrating-app-permissions-and-access-tokens#retiring-legacy-tokens)).
HowTo get Dropbox refresh-token and/or access-token (console interactive mode)

In order to access offline to dropbox services without having to login, you will need:
````bash
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](https://dropbox.tech/developers/migrating-app-permissions-and-access-tokens#retiring-legacy-tokens)). 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.
Expand All @@ -29,29 +48,40 @@ Having this **refresh-token** in "offline" mode (without login requirement) you

## 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)
- (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
- Setup this project as dependency
````bash
npm i dropbox-refresh-token
````

- Integration examples
````javascript
import {isSet, getShortLivedAccessCodeUrlViaLoginUrl, getRefreshToken, refreshAccessToken} from "dropbox-refresh-token";
import {
isSet, getShortLivedAccessCodeUrlViaLoginUrl,
getRefreshToken, refreshAccessToken
} from "dropbox-refresh-token";

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

````

## Console mode step-by-step to retrieve Dropbox RefreshToken
### Another example - step-by-step to retrieve Dropbox RefreshToken

<!> original idea is [FranklinThaker/Dropbox-API-Uninterrupted-Access](https://github.com/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)

````bash
git clone https://github.com/boly38/dropbox-refresh-token.git
cd dropbox-refresh-token
Expand All @@ -71,3 +101,5 @@ node src/dropbox_is_token_valid.js
![Repobeats](https://repobeats.axiom.co/api/embed/381c29252a790e5069c7a80418665d22f4dbfaab.svg "Repobeats analytics image")

<small>provided by [Repobeats](https://repobeats.axiom.co/)</small>


4 changes: 4 additions & 0 deletions bin/get_refresh_token.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env node
import {interactiveGetRefreshToken} from "../src/dropbox_refresh_token_interactive.js";

await interactiveGetRefreshToken();
Loading