public async Task <string> GetAuthToken(string code) { var clientId = ConfigurationManager.AppSettings.Get("stravaClientId"); var clientSecret = ConfigurationManager.AppSettings.Get("stravaClientSecret"); var httpClient = new HttpClient(); //get the token from the server using client secret string url = string.Format("https://www.strava.com/oauth/token?client_id={0}&client_secret={1}&code={2}", clientId, clientSecret, code); var resp = await httpClient.PostAsync(new Uri(url), null); string str = await resp.Content.ReadAsStringAsync(); StravaAuth athlete = Unmarshaller <StravaAuth> .Unmarshal(str); await SetAuthToken(athlete); return(athlete.AccessToken); //await FirebaseClient.Instance.Value.PutAsync(string.Format("athletes/{0}", auth.Id), JsonConvert.SerializeObject(auth)); }
public async Task SetAuthToken(StravaAuth authAthlete) { var storageResponse = await StorageClient.Instance.Value.GetAsync("/athletes"); var data = storageResponse.ResultAs <Dictionary <string, StravaAuth> >(); var athletes = data.Select(s => s.Value); var found = athletes.FirstOrDefault(a => a.Athlete != null && a.Athlete.Id == authAthlete.Athlete.Id); if (found != null) { string key = data.FirstOrDefault(f => f.Value == found).Key; var resp = await StorageClient.Instance.Value.UpdateAsync("/athletes/" + key, authAthlete); var x = resp.StatusCode; } else { await StorageClient.Instance.Value.PushAsync("/athletes", authAthlete); } }