Fitbit: koppeling met de API en te koppelen via een console-applicatie

Ingediend door Dirk Hornstra op 31-mar-2020 22:40

Ik wil graag "mijn data" ook zelf in bezit hebben. Je kunt via het dashboard van Fitbit je stappen en kilometers terug kijken, maar je moet dan per dag doorklikken. Hetzelfde geldt voor de wekelijkse mail die je krijgt. Dat is nu volgens mij een totaal-overzicht van de week, "vroeger" (ik heb de oude mailtjes nog) kreeg je een staafdiagram per dag (wat ik mooier vond).

Als je de data zelf hebt, kun je er ook zelf een diagram of wekelijkse mail van maken. Je begint met het aanmaken van een app. Dat doe je op de website van Fitbit, de stappen staan in mijn vorige post: link.

Dat hoefde ik nu niet meer te doen, want "Dirks Data Dump" bestaat nog steeds. De vorige keer heb ik een project in Visual Studio gebouwd voor het gebruik in een website. Maar ik wilde nu een library/bibliotheek maken die je bij een willekeurig project kunt toevoegen.

Dat is FitbitApiLibrary in mijn geval. Deze zorgt voor de OAuth2-koppeling, dus het aanvragen van een code, het aanvragen van een access-token en het indienen van een refresh-token, zodat je weer een nieuw access-token krijgt.

Je ziet in dit project nog een paar submappen, DataStructures bevat de objecten die ik aanmaak op basis van de JSON die Fitbit aanlevert. Je ziet bijvoorbeeld dat een Badge een aantal verschillende afmetingen qua afbeelding heeft (100, 125, 300, 50, 75 en 640 pixels). 

Enumerations zijn een aantal waardes die nodig zijn bij het koppelen van jouw fitbit-account aan deze app. Zo moet je aangeven welke zaken de app mag bekijken, dit wordt scope genoemd en deze bevat onder andere activity, heartrate, profile.

De Helper map bevat functionaliteit om de JSON tekst die aangeleverd wordt om te zetten naar objecten waar we in de code wat mee kunnen. Zo gebruik ik nu niet meer de Newtonsoft.JSON, maar de System.Text.Json van Microsoft zelf wat een goed alternatief zou zijn. Ik kon er mee doen wat ik nodig had voor dit project.

Maar met de bibliotheek zelf ben je er niet, je hebt een programma nodig waarmee je het kunt uitvoeren/testen. Ik heb daarom de console-applicatie FitbitConnector toegevoegd. Hoofdmoot van dit project is in de map Helpers de class MenuBuilderHelper die de console-schermen opbouwt en de gebruikersinvoer afvangt. De class FitbitUserHelper zorgt voor de afhandeling, wil je op je scherm het profiel van een gebruiker zien, dan is hier een functie die de benodigde aanroepen naar de FitbitApiLibrary uitvoert.

Ik kan met deze bibliotheek en de console-applicatie een gebruiker toevoegen, de profielgegevens en badges bekijken en de activiteit (aantal stappen) van de afgelopen maand volgens de Fitbit-tracker.

Omdat mijn USB-stick de vorige keer kapot gegaan is en ik geen back-up had, heb ik de code nu wel meteen op Github gezet. Wil je het gaan gebruiken (dan moet je wel zelf Visual Studio hebben om de code te builden), dan kun je het hier op Github vinden: https://github.com/lordofcode/fitbit.api-and-console-interface