node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »


Dropbox Authenticator

Simple authentication helper for Dropbox.


$ npm install dropbox-authenticator


The authenticator is a tiny object that exposes two single functions.


The initiate function asks Dropbox for a request token and generates a URL that you should send your user to. You are then responsible for providing a calback URL that Dropbox can send the user to.

NOTE: The Authenticator attaches an ID to the callback URL which makes it possible to have several simultaneous authentication attempts by several users. It does however make it impossible to use your own querystring with the callback url.

Once the user comes back to you, you complete the authorization by calling complete.


The complete function takes the request and response streams from an HTTP server request listener. As well as a callback function. Once authorization is complete this function is called with the OAuth credentials. It's up to you to store these.


Quick 'n dirty example showing how to use this thing:

var Authenticator = require('dropbox-authenticator');
var http = require('http');
var auth = Authenticator(YOUR_APP_ID, YOUR_APP_SECRET);
// Handle authorizations 
http.createServer(function (req, res) {
  if (req.url === '/') {
    auth.initiate('', function (err, url) {
      res.write('<a href="' + url + '">Authorize!</a>');
  else {
    auth.complete(req, res, function (err, credentials) {
      // Save credentials or something here 

Note that this fails if many users access the server simultaneously. This is because Authenticator needs to store some tokens internally between each step. I'm thinking about a fix for this. In the mean time I recommend doing some kind of session thing and tying one instance of Authenticator to each session.