//Final step. Take this authorization information and use it in the app /// <summary> /// Part 2 of authorisation. User has (hopefully) accepted request and fitbit passed authorisation code. /// </summary> /// <returns></returns> public async Task <ActionResult> Callback() { FitbitAppCredentials appCredentials = FitbitHelper.GetFitbitAppCredentials(); var authenticator = new OAuth2Helper(appCredentials, Request.Url.GetLeftPart(UriPartial.Authority) + "/Fitbit/Callback"); string code = Request.Params["code"]; // ask for access token. OAuth2AccessToken accessToken = await authenticator.ExchangeAuthCodeForAccessTokenAsync(code); // save token (user may have previously authorised in which case update) FitbitHelper.AddOrUpdateUser(_unitOfWork, User.Identity.GetUserId(), accessToken); return(View("Home", PopulateModel())); }
public object GetAuthCode(string code) { var authorization = "Basic Y2xpZW50X2lkOjljZmZlMzg2ZjFiZGQ5NjZjZmZhOTY1OTJhN2NhYzky"; var contenttype = "application/x-www-form-urlencoded"; var redirectURI = "http://localhost:50195/api/fitbit/callback"; //var redirectURI = "https://testfit.azurewebsites.net/api/fitbit/callback"; var queryParams = "client_id=" + OAuthClientID + "&grant_type=authorization_code&redirect_uri=" + redirectURI + "&code=" + code; var appCredentials = new FitbitAppCredentials() { ClientId = ConfigurationManager.AppSettings["FitbitClientId"], ClientSecret = ConfigurationManager.AppSettings["FitbitClientSecret"] }; //make sure you've set these up in Web.Config under <appSettings>: //Session["AppCredentials"] = appCredentials; //Provide the App Credentials. You get those by registering your app at dev.fitbit.com //Configure Fitbit authenticaiton request to perform a callback to this constructor's Callback method var authenticator = new OAuth2Helper(appCredentials, redirectURI); string[] scopes = new string[] { "profile", "activity", "heartrate", "location", "nutrition", "settings", "sleep", "social", "weight" }; string authUrl = authenticator.GenerateAuthUrl(scopes, null); return(Redirect(authUrl)); /* * HttpClient client = new HttpClient(); * client.BaseAddress = new Uri(AccessTokenRefreshURI); * * client.DefaultRequestHeaders.Accept * .Add(new MediaTypeWithQualityHeaderValue(contenttype));//ACCEPT header * client.DefaultRequestHeaders.Add("Authorization", authorization); * * HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, queryParams); * * client.SendAsync(request) * .ContinueWith(responseTask => * { * var response = responseTask.Result; * return response; * }); * * return null; */ }
public void Most_Basic() { var credentials = new FitbitAppCredentials() { ClientId = "SomeID", ClientSecret = "THE Secret ;)" }; var accessToken = new OAuth2AccessToken() { Token = "", TokenType = "", ExpiresIn = 3600, RefreshToken = "" }; var sut = new FitbitClient(credentials, accessToken); Assert.IsNotNull(sut.HttpClient); }
public void Can_Use_Interceptors_Without_Autorefresh() { var credentials = new FitbitAppCredentials() { ClientId = "SomeID", ClientSecret = "THE Secret ;)" }; var accessToken = new OAuth2AccessToken() { Token = "", TokenType = "", ExpiresIn = 3600, RefreshToken = "" }; //Registere an interceptor, but disable the auto-token-refresh interceptor var sut = new FitbitClient(credentials, accessToken, new InterceptorCounter(), false); Assert.IsNotNull(sut.HttpClient); }
public void Can_Instantiate_Without_Any_Interceptors() { var credentials = new FitbitAppCredentials() { ClientId = "SomeID", ClientSecret = "THE Secret ;)" }; var accessToken = new OAuth2AccessToken() { Token = "", TokenType = "", ExpiresIn = 3600, RefreshToken = "" }; //Ensure not even the auto-token-refresh interceptor is active var sut = new FitbitClient(credentials, accessToken, false); Assert.IsNotNull(sut.HttpClient); }
//Final step. Take this authorization information and use it in the app public async Task <ActionResult> Callback() { FitbitAppCredentials appCredentials = (FitbitAppCredentials)Session["AppCredentials"]; var authenticator = new OAuth2Helper(appCredentials, Request.Url.GetLeftPart(UriPartial.Authority) + "/Fitbit/Callback"); string code = Request.Params["code"]; OAuth2AccessToken accessToken = await authenticator.ExchangeAuthCodeForAccessTokenAsync(code); //Store credentials in FitbitClient. The client in its default implementation manages the Refresh process var fitbitClient = GetFitbitClient(accessToken); ViewBag.AccessToken = accessToken; return(View()); }
public async Task <IHttpActionResult> RegistrationResult(string code) { FitbitAppCredentials appCredentials = (FitbitAppCredentials)session[AppCredentials]; var authenticator = new OAuth2Helper(appCredentials, $"{Request.RequestUri.GetLeftPart(UriPartial.Authority)}/fitbit/{nameof(RegistrationResult).ToLowerInvariant()}"); OAuth2AccessToken accessToken = await authenticator.ExchangeAuthCodeForAccessTokenAsync(code); // Store credentials in FitbitClient. The client in its default implementation manages the Refresh process var fitbitClient = GetFitbitClient(accessToken); // register a subscription for the authorized user // TODO: Remove hardcoded subscriber id -- should be the equivalent of our user id await fitbitClient.AddSubscriptionAsync(APICollectionType.user, "123456789"); return(Ok()); }
public IHttpActionResult Authorize() { var appCredentials = new FitbitAppCredentials() { ClientId = clientId, ClientSecret = clientSecret }; session[AppCredentials] = appCredentials; // provide the App Credentials. You get those by registering your app at dev.fitbit.com // configure Fitbit authenticaiton request to perform a callback to this controller's result method var authenticator = new OAuth2Helper(appCredentials, $"{Request.RequestUri.GetLeftPart(UriPartial.Authority)}/fitbit/{nameof(RegistrationResult).ToLowerInvariant()}"); string[] scopes = Enum.GetValues(typeof(FitbitAuthScope)).Cast <FitbitAuthScope>().Select(x => x.ToString().ToLowerInvariant()).ToArray(); string authUrl = authenticator.GenerateAuthUrl(scopes, null); return(Redirect(authUrl)); }
/// <inheritdoc/> public async Task <JsonResult> GetFitBitActivityHistory(FitBitAuthenticationToken authToken) { await Task.Delay(0); FitbitAppCredentials credentials = new FitbitAppCredentials() { ClientId = "22CCZ8", ClientSecret = "d73f338b7121d347da36be95000c959b" }; Fitbit.Api.Portable.OAuth2.OAuth2AccessToken accessToken = new Fitbit.Api.Portable.OAuth2.OAuth2AccessToken() { Token = authToken.AccessToken, ExpiresIn = authToken.ExpiresIn, RefreshToken = authToken.RefreshToken, TokenType = authToken.TokenType, UserId = authToken.UserId, }; var client = new FitbitClient(credentials, accessToken); var lastMonth = DateTime.UtcNow; lastMonth.AddMonths(-7); var retrievedActivities = await client.GetActivityLogsListAsync(null, lastMonth); List <Activities> listOfRuns = new List <Activities>(); foreach (var activity in retrievedActivities.Activities) { // 90009 is a run. if (activity.ActivityTypeId == 90009) { listOfRuns.Add(activity); } } return(new JsonResult(new ActivityLogsList { Activities = listOfRuns })); }
// // GET: /FitbitAuth/ // Setup - prepare the user redirect to Fitbit.com to prompt them to authorize this app. public ActionResult Authorize() { var appCredentials = new FitbitAppCredentials() { ClientId = ConfigurationManager.AppSettings["FitbitClientId"], ClientSecret = ConfigurationManager.AppSettings["FitbitClientSecret"] }; //make sure you've set these up in Web.Config under <appSettings>: Session["AppCredentials"] = appCredentials; //Provide the App Credentials. You get those by registering your app at dev.fitbit.com //Configure Fitbit authenticaiton request to perform a callback to this constructor's Callback method var authenticator = new OAuth2Helper(appCredentials, Request.Url.GetLeftPart(UriPartial.Authority) + "/Fitbit/Callback"); string[] scopes = new string[] { "profile", "weight", "activity", "sleep" }; string authUrl = authenticator.GenerateAuthUrl(scopes, null); return(Redirect(authUrl)); }
// // GET: /Authorize/ // Setup - prepare the user redirect to Fitbit.com to prompt them to authorize this app. public async Task <ActionResult> Authorize() { //make sure you've set these up in Web.Config under <appSettings>: var appCredentials = new FitbitAppCredentials() { ClientId = ConfigurationManager.AppSettings["FitbitConsumerKey"], ClientSecret = ConfigurationManager.AppSettings["FitbitConsumerSecret"] }; //Provide the App Credentials. You get those by registering your app at dev.fitbit.com //Configure Fitbit authenticaiton request to perform a callback to this constructor's Callback method var authenticator = new OAuth2Helper(appCredentials, Request.Url?.GetLeftPart(UriPartial.Authority) + "/Fitbit/Callback"); string[] scopes = new string[] { "profile" }; Session["FitbitAuthenticator"] = authenticator; //note: at this point the RequestToken object only has the Token and Secret properties supplied. Verifier happens later. string authUrl = authenticator.GenerateAuthUrl(scopes); return(Redirect(authUrl)); }
public OAuth2Helper(FitbitAppCredentials credentials, string redirectUri) { this.ClientId = credentials.ClientId; this.ClientSecret = credentials.ClientSecret; this.RedirectUri = redirectUri; }
static void Main(string[] args) { var clientId = "22CR42"; var clientSecret = "072b825966d4ce4a05b58c4ab84154d5"; var userId = "*****@*****.**"; var token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzUTU5TTkiLCJhdWQiOiIyMkNSNDIiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJ3aHIgd251dCB3cHJvIHdzbGUgd3dlaSB3c29jIHdzZXQgd2FjdCB3bG9jIiwiZXhwIjoxNTUwNzk3NzU1LCJpYXQiOjE1MTkyNjE3NTV9.WQsgVrO9Gt1KKgFMIyj75CGOuXXnmr_WlTHnDKP0i3M"; var fitbitAppCredentials = new FitbitAppCredentials { ClientId = clientId, ClientSecret = clientSecret }; var oAuth2AccessToken = new OAuth2AccessToken { UserId = userId, Token = token, ExpiresIn = 31536000, TokenType = "Bearer", //https://dev.fitbit.com/build/reference/web-api/oauth2/#scope All of these items are displayed to the user when requesting access Scope = "profile+activity+settings+social+weight+location+heartrate+sleep+nutrition" }; try { FitbitClient client = new FitbitClient(fitbitAppCredentials, oAuth2AccessToken); var date = new DateTime(2018, 2, 10, 5, 30, 0); //changed date //what is Activity? not a variable, but what? //Calls method to get the data Activity dayActivity = GetDayActivityAsync(client, date).GetAwaiter().GetResult(); Console.WriteLine("steps on " + date.ToShortDateString() + " " + dayActivity.Summary.Steps.ToString()); Console.WriteLine("Activity Calories" + " " + dayActivity.Summary.ActivityCalories); Console.WriteLine("CaloriesBMR" + " " + dayActivity.Summary.CaloriesBMR); Console.WriteLine("CaloriesOut" + " " + dayActivity.Summary.CaloriesOut); //Distances is a list Console.WriteLine("Distances" + " "); foreach (var distance in dayActivity.Summary.Distances) { Console.Write(distance.Distance + " "); Console.WriteLine(distance.Activity); } Console.WriteLine("Elevation" + " " + dayActivity.Summary.Elevation); Console.WriteLine("Fairly Active Minutes" + " " + dayActivity.Summary.FairlyActiveMinutes); Console.WriteLine("Floors" + " " + dayActivity.Summary.Floors); Console.WriteLine("HeartRateZones" + " " + dayActivity.Summary.HeartRateZones); Console.WriteLine("LightlyActiveMinutes" + " " + dayActivity.Summary.LightlyActiveMinutes); Console.WriteLine("MarginalCalories" + " " + dayActivity.Summary.MarginalCalories); Console.WriteLine("RestingHeartRate" + " " + dayActivity.Summary.RestingHeartRate); Console.WriteLine("SedentaryMinutes" + " " + dayActivity.Summary.SedentaryMinutes); Console.WriteLine("Very Active Minutes" + " " + dayActivity.Summary.VeryActiveMinutes); //Calls method to get the intradayData IntradayData intradayData = GetIntraDayTimeSeriesAsync(client, date).GetAwaiter().GetResult(); Console.WriteLine("Intraday Data:"); using (var sw = new StreamWriter(@"IntraDayData.csv")) { var writer = new CsvWriter(sw); foreach (var set in intradayData.DataSet.Where(d => d.Value != "0")) { Console.Write(set.Value + " "); Console.WriteLine(set.Time); writer.WriteField(set.Value); writer.WriteField(set.Time); writer.NextRecord(); //want to use CsvHelper to write data to a file } } } catch (Exception ex) { Console.WriteLine("error:"); Console.WriteLine(ex.Message); Console.ReadKey(); } finally { Console.WriteLine("press any key"); Console.ReadKey(); } }