Socket
Socket
Sign inDemoInstall

fitbit-api-handler

Package Overview
Dependencies
23
Maintainers
1
Versions
153
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    fitbit-api-handler

Unofficial handler for Fitbit API


Version published
Weekly downloads
15
increased by50%
Maintainers
1
Install size
14.7 MB
Created
Weekly downloads
 

Changelog

Source

v8.0.0 (2022-04-02)

Changed

  • a4a5476 Update dependency fitness-models to v6 BREAKING (#230)

Co-authored-by: Renovate Bot bot@renovateapp.com

  • 9d906b3 Update actions/setup-node action to v3 (#235)

Co-authored-by: Renovate Bot bot@renovateapp.com

  • 3245c61 Update actions/checkout action to v3 (#238)

Co-authored-by: Renovate Bot bot@renovateapp.com

Readme

Source

Fitbit API handler

npm version renovate-app Known Vulnerabilities codecov travis

This is an unofficial web API SDK for Fitbit. Current focus is to work with activities but it is possible to request all other endpoints.

The library is compiled for node 9.6.

How it works

I use a library for handling REST API request - rest-api-handler. It is based on browser fetch feature so it needs polyfill.

How to use

Install npm library:

npm install fitbit-api-handler --save

Include fetch polyfill. I recommend cross-fetch. And you have to include form-data polyfill.

require('cross-fetch/polyfill');
global.FormData = require('form-data');

Authentize

Check authentization methods on Fitbit. First generate url for Login to Fitbit:

const { Api, ApiScope } = require('fitbit-api-handler');
const api = new Api(YOUR_CLIENT_ID, YOUR_CLIENT_SECRET);
console.log(api.getLoginUrl(YOUR_RETURN_URL, [ApiScope.ACTIVITY, ApiScope.PROFILE]))

After login you will be redirected to YOUR_RETURN_URL with code parameter. Use this code to create authentization token:

const token = await api.requestAccessToken(YOUR_CODE, YOUR_RETURN_URL);
api.setAccessToken(token.access_token);

// extend your token
const extendedToken = await api.extendAccessToken(token.refresh_token);

Now you can send requests

Getting activities

Search for activities:

const { DateTime } = require('luxon');

const { activities } = await api.getActivities({
    afterDate: DateTime.fromObject({
        year: 2018,
        month: 3,
        day: 1,
    }),
});
console.log(activities);

Create a new activity

To create activity, use ActivityFactory

const { DateTime, Duration } = require('luxon');
const math = require('mathjs');
const { Activity, ACTIVITY_TYPES } = require('fitbit-api-handler');

const start = DateTime.fromObject({
    year: 2018,
    month: 3,
    day: 27,
    hour: 5,
    minute: 2,
});

const activity = Activity.get(
    ACTIVITY_TYPES.RUNNING,
    start,
    Duration.fromObject({ minutes: 3 }),
    math.unit(3, 'km'),
);

const createdActivity = await api.createActivity(activity);

Get information about rate limiting

try {
    await api.createActivity(activity);
} catch (exception) {
    if (exception instanceof FitbitApiLimitException) {
        const retryIn: Duration = exception.retryIn();
        console.log(`Wait for ${retryIn.as('seconds')}`);
    }
}

console.log(api.getFillRateLimits());

FAQs

Last updated on 02 Apr 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc