The fitbitViz R package allows the extraction of data and the visualization of ‘ggplot2’, ‘Leaflet’ and 3-dimensionsal ‘Rayshader’ Maps using the Fitbit Web API. If you own any of the Fitbit activity trackers you can take advantage of this package. A detailed explanation of the functionality can be found both in the Vignette and in the blog post.
The 3-dimensional Rayshader Map requires the installation of the CopernicusDEM R package which includes the 30- and 90-meter elevation data.
To make use of this R package you have first to register an Application in https://dev.fitbit.com/. By registering an application you will receive the Fitbit token which besides your existing user-id is required so that you can take advantage of the fitbitViz functions.
There are many resources on the web on how to setup a Fitbit application. The Fitbit web API documenation includes more details. The next images and comments explain the whole process,
Go to https://dev.fitbit.com/ and click on Manage > Register an App
Login with your Fitbit credentials and follow the prompts. I used as URL in the Registration Page my Fitbit user-id url, https://www.fitbit.com/user/USER_ID
. You have to replace the USER_ID in the url with your specific user-id. Then in the Redirect URL field use https://localhost
. Tick the remaining options as in the next image, read and agree to the terms of service and click Register to register the application.
Once the app is created, click on the ‘OAuth 2.0 Tutorial’ weblink near the bottom of the screen:
In the ‘Fitbit OAuth 2.0 Tutorial’ website the Client ID already exists and we have to copy-paste the Client Secret from the previous web page
then we scroll down to the ‘Getting an Access Token’ section and click to the two “Generate” buttons to generate the required codes,
In the next section ‘Step 2: Display Authorization Page’ we click to the already created URL which will open a new tab to our web browser,
in this new web page tick the Allow All and click the Allow button
After clicking Allow, the browser tab redirects to the callback URL. Although this might seem like an “Unable to connect” web page the important thing here is to just copy the URL of the web page as follows,
and paste it to the section “Step 3: Handle the Redirect” where the “Authorization code” and “State” will be created,
finally in section “Step 4: Get Tokens” we just click to the SUBMIT REQUEST button to receive the token in the Response field,
The parsed response looks as follows,
You now have your Access Token and can start using the fitbitViz R package to access and visualize your data. Keep in mind that the Access token is valid for 8 hours. Based on the documentation of the fitbit API
“After the Access Token expiration time has passed your requests will receive a 401 HTTP error. When this happens, your app should use the Refresh Token to get a new pair of tokens”.
To refresh the token the user of the fitbitViz R package can use the refresh_token_app() function, which requires the client id, client secret and refresh token of your registered Fitbit application, in the following way:
require(fitbitViz)
#..............................................
# Refresh token once it expires (after 8 hours)
#..............................................
client_id = 'xxxxxx'
client_secret = 'xxxxxxxxxxxxxxxxxx'
refresh_token = 'xxxxxxxxxxxxxxxxxxxxxxxx'
# refresh the token
new_token = refresh_token_app(client_id = client_id,
client_secret = client_secret,
refresh_token = refresh_token)
# a named list that includes the new 'access_token' and 'refresh_token'
str(new_token)
UPDATE 26-12-2022: The registration of an Application of the fitbit web API has changed and it seems that users have to refresh the token every 8 hours. The following instructions were meant to be used with a registered application that wouldn’t require to refresh the token for 1 year.
The functions of the fitbitViz R package can be used in an automatic way so that the user can keep track of the Visualizations and data over time.
From the first moment I’ve started implementing the fitbitViz R package this is what I actually had in my mind. You can have a look to my Fitbit Visualizations website. The following steps explain in detail how this can be achieved:
What it remains is to modify the .github/workflows/gh_fitbit_blog.yaml file to adjust the
Regarding the fitbitViz parameters (.github/workflows/gh_fitbit_blog.yaml file) at it’s current state the application takes:
The order to modify, debug or include new code / functions to the files of this Github Repository is the following:
One important thing to keep in mind is that besides the Visualizations the user has access also to the pre-processed Fitbit data by clicking to a CSV button as shown in the next image,
Docker images of the fitbitViz package are available to download from my dockerhub account. The images come with Rstudio and the R-development version (latest) installed. The whole process was tested on Ubuntu 18.04. To pull & run the image do the following,
/fitbitviz:rstudiodev
docker pull mlampros
-d --name rstudio_dev -e USER=rstudio -e PASSWORD=give_here_your_password --rm -p 8787:8787 mlampros/fitbitviz:rstudiodev docker run
The user can also bind a home directory / folder to the image to use its files by specifying the -v command,
-d --name rstudio_dev -e USER=rstudio -e PASSWORD=give_here_your_password --rm -p 8787:8787 -v /home/YOUR_DIR:/home/rstudio/YOUR_DIR mlampros/fitbitviz:rstudiodev docker run
In the latter case you might have first give permission privileges for write access to YOUR_DIR directory (not necessarily) using,
-R 777 /home/YOUR_DIR chmod
The USER defaults to rstudio but you have to give your PASSWORD of preference (see www.rocker-project.org for more information).
Open your web-browser and depending where the docker image was build / run give,
1st. Option on your personal computer,
://0.0.0.0:8787 http
2nd. Option on a cloud instance,
://Public DNS:8787 http
to access the Rstudio console in order to give your username and password.
To install the package from CRAN use,
install.packages("fitbitViz")
and to download the latest version of the package from Github,
remotes::install_github('mlampros/fitbitViz')
If you use the fitbitViz R package in your paper or research please cite https://CRAN.R-project.org/package=fitbitViz
:
@Manual{,
= {{fitbitViz}: Fitbit Visualizations},
title = {Lampros Mouselimis},
author = {2022},
year = {R package version 1.0.5},
note = {https://CRAN.R-project.org/package=fitbitViz},
url }