Skip to content
Wendy Smoak edited this page Jun 27, 2015 · 4 revisions

The OAuth Process

This page describes how to use fitgem to do authentication/authorization with the fitbit.com OAuth service.

If you've ever done any oauth client programming then the model will appear familiar. Your first step, if haven't already, is to visit https://dev.fitbit.com/ and register your application to get your consumer key and consumer secret and set your callback URL, if appropriate for your app. There's more documentation at the site so I won't belabor it here.

Below I've included two sample scripts that use Fitgem::Client to retrieve data. One shows how to do the initial authorization without doing the callback; the other shows how to use saved values from that initial authorization to reconnect with the API and get subsequent information.

require 'fitgem'

consumer_key = 'your-app-consumer-key'
consumer_secret = 'your-app-consumer-secret'

client = Fitgem::Client.new({:consumer_key => consumer_key, :consumer_secret => consumer_secret})

request_token = client.request_token
token = request_token.token
secret = request_token.secret

puts "Go to http://www.fitbit.com/oauth/authorize?oauth_token=#{token} and then enter the verifier code below and hit Enter"
verifier = gets.chomp

access_token = client.authorize(token, secret, { :oauth_verifier => verifier })

puts "Verifier is: "+verifier
puts "Token is:    "+access_token.token
puts "Secret is:   "+access_token.secret

After running this and successfully connecting with verifier string that is displayed by the Fitgem site, you can reconnect using the script below. To do so, take the token and secret that were printed out from the script above and paste them in where appropriate. In this example we are using the client to get the user's information.

require 'fitgem'

consumer_key = 'your-app-consumer-key'
consumer_secret = 'your-app-consumer-secret'
token = 'token-received-in-above-script'
secret = 'secret-received-in-above-script'
user_id = 'your-user-id' # may be similar to '12345N'

client = Fitgem::Client.new({:consumer_key => consumer_key, :consumer_secret => consumer_secret, :token => token, :secret => secret, :user_id => user_id})
access_token = client.reconnect(token, secret)
p client.user_info

You can use this script to learn about the data structures that are returned from different API calls. Since this library always retrieves JSON responses and then parses it into Ruby structures, you can interrogate the response data with simple calls to hashes.

Note: Your user id is visible in the URL when viewing your profile, for example https://www.fitbit.com/user/1AB23C