示例#1
0
        private async Task <string> RefreshToken()
        {
            objTokenAfterLogin particleResponse = new objTokenAfterLogin();

            var requestParameters = new[] {
                new KeyValuePair <string, string> ("refresh_token", dataTempAuth.refresh_token),
                new KeyValuePair <string, string> ("client_id", client_id),
                new KeyValuePair <string, string> ("grant_type", "refresh_token")/*,
                                                                                  * new KeyValuePair<string, string> ("name", name),
                                                                                  * new KeyValuePair<string, string> ("type", "0"),
                                                                                  * new KeyValuePair<string, string> ("access_token", dataTempAuth.access_token),*/
            };

            var requestContent = new FormUrlEncodedContent(requestParameters);

            try
            {
                using (var client = new HttpClient())
                {
                    HttpResponseMessage response = await client.PostAsync(
                        serviceBase +
                        "?refresh_token=" + dataTempAuth.refresh_token +
                        "&client_id=" + client_id +
                        "&grant_type=" + "refresh_token",
                        requestContent
                        );

                    using (var reader = new System.IO.StreamReader(await response.Content.ReadAsStreamAsync()))
                    {
                        var responseText = await reader.ReadToEndAsync();

                        return(responseText);
                        //particleResponse = JsonConvert.DeserializeObject<objTokenAfterLogin>(responseText);
                        //return particleResponse;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
示例#2
0
        public async Task <string> authanythingpost()
        {
            try
            {
                //string postData = Request.Content.ReadAsStringAsync().Result;
                //authModel authData = JsonConvert.DeserializeObject<authModel>(postData);

                #region => dummy data
                var authData = new authModel();
                authData.userName          = "******";
                authData.password          = "******";
                dataTempAuth.access_token  = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
                dataTempAuth.refresh_token = "d9d0ca308de64e";
                dataTempAuth.token_type    = "bearer ";
                #endregion

                anythingData andt = new anythingData
                {
                    aaa1 = "ax01",
                    bbb2 = "ax02",
                    ccc3 = "ax03"
                };

                string data = JsonConvert.SerializeObject(authData);

                byte[]    bytes     = Encoding.UTF8.GetBytes(data);
                WebClient webClient = new WebClient();
                webClient.Headers.Clear();
                webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                webClient.Headers.Add("Authorization", dataTempAuth.token_type + dataTempAuth.access_token);
                string apiname = "test/anythingpost";
                resBase = "http://localhost:3000/";
                string             rev      = Encoding.UTF8.GetString(webClient.UploadData(resBase + apiname, bytes));
                anythingData       dataObj  = JsonConvert.DeserializeObject <anythingData>(rev);
                objTokenAfterLogin retToken = new objTokenAfterLogin();
                retToken.refresh_token = rev;
                return(rev);
                //return retToken;
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError)
                {
                    var response = ex.Response as HttpWebResponse;
                    if (response != null)
                    {
                        if ((int)response.StatusCode == 401)
                        {
                            if (dataTempAuth != null)
                            {
                                var usingBuilkAuthToken = false;

                                if (response.ResponseUri.ToString().Split('/')[2] == resBase.Split('/')[2].ToString())
                                {
                                    usingBuilkAuthToken = true;
                                }

                                if (usingBuilkAuthToken)
                                {
                                    var taskUpload           = RefreshToken();
                                    var waitForRefreshTokens = await taskUpload;
                                    return(waitForRefreshTokens);
                                }
                            }
                        }
                    }
                    else
                    {
                        // no http status code available
                    }
                }
                else
                {
                    // no http status code available
                }
                throw ex;
            }
        }