fitbit

0.0.7 • Public • Published

Fitbit API Client for Node.js Build Status

Currently a read only implementation for reading data from the Fitbit API as an authenticated user.

TODO

I've split this into two sections, top section is what I need to have for the project I created this module for and the latter is what the API supports.

Needed by me:

  • Add user model
  • Add time series data for models
  • Allow data models to be updated("logged") and deleted via the API

Supported by API:

  • Add Blood pressure, heart rate, glucose resource models
  • Add goals for all models that support them
  • Collection metadata models
  • Anything else...

Installation

npm install fitbit

Usage

Below is an example usage for authenticating and making a resource request:

var express = require('express')
  , config = require('./config/app')
  , app = express()
  , Fitbit = require('fitbit');
 
app.use(express.cookieParser());
app.use(express.session({secret: 'hekdhthigib'}));
app.listen(3000);
 
// OAuth flow
app.get('/', function (req, res) {
  // Create an API client and start authentication via OAuth
  var client = new Fitbit(config.CONSUMER_KEY, config.CONSUMER_SECRET);
 
  client.getRequestToken(function (err, token, tokenSecret) {
    if (err) {
      // Take action
      return;
    }
 
    req.session.oauth = {
        requestToken: token
      , requestTokenSecret: tokenSecret
    };
    res.redirect(client.authorizeUrl(token));
  });
});
 
// On return from the authorization
app.get('/oauth_callback', function (req, res) {
  var verifier = req.query.oauth_verifier
    , oauthSettings = req.session.oauth
    , client = new Fitbit(config.CONSUMER_KEY, config.CONSUMER_SECRET);
 
  // Request an access token
  client.getAccessToken(
      oauthSettings.requestToken
    , oauthSettings.requestTokenSecret
    , verifier
    , function (err, token, secret) {
        if (err) {
          // Take action
          return;
        }
 
        oauthSettings.accessToken = token;
        oauthSettings.accessTokenSecret = secret;
 
        res.redirect('/stats');
      }
  );
});
 
// Display some stats
app.get('/stats', function (req, res) {
  client = new Fitbit(
      config.CONSUMER_KEY
    , config.CONSUMER_SECRET
    , { // Now set with access tokens
          accessToken: req.session.oauth.accessToken
        , accessTokenSecret: req.session.oauth.accessTokenSecret
        , unitMeasure: 'en_GB'
      }
  );
 
  // Fetch todays activities
  client.getActivities(function (err, activities) {
    if (err) {
      // Take action
      return;
    }
 
    // `activities` is a Resource model
    res.send('Total steps today: ' + activities.steps());
  });
});

Readme

Keywords

Package Sidebar

Install

npm i fitbit

Weekly Downloads

13

Version

0.0.7

License

MIT

Last publish

Collaborators

  • p-m-p