コード例 #1
0
        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));
        }
コード例 #2
0
        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);
            }
        }