static private bool RefreshTokens() { if (!HasBeenAuthorized()) { return(false); } string url = "https://api.imgur.com/oauth2/token"; string responseString = string.Empty; using (WebClient wc = new WebClient()) { try { var values = new System.Collections.Specialized.NameValueCollection { { "client_id", m_ClientID }, { "client_secret", m_ClientSecret }, { "grant_type", "refresh_token" }, { "refresh_token", m_CurrentRefreshToken } }; byte[] response = wc.UploadValues(url, "POST", values); responseString = System.Text.Encoding.ASCII.GetString(response); } catch (System.Net.WebException ex) { if (ex.Response == null) { if (networkRequestFailed != null) { networkRequestFailed.Invoke(); } } else { System.IO.Stream stream = ex.Response.GetResponseStream(); int currByte = -1; StringBuilder strBuilder = new StringBuilder(); while ((currByte = stream.ReadByte()) != -1) { strBuilder.Append((char)currByte); } responseString = strBuilder.ToString(); } } catch (System.Exception ex) { Log.Error("Unexpected Exception: " + ex.ToString()); } } if (responseString == string.Empty) { return(false); } APIResponses.TokenResponse resp = null; try { resp = Newtonsoft.Json.JsonConvert.DeserializeObject <APIResponses.TokenResponse>(responseString, new Newtonsoft.Json.JsonSerializerSettings { PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects }); } catch (Newtonsoft.Json.JsonReaderException ex) { Log.Error("Newtonsoft.Json.JsonReaderException occurred while trying to deserialize the following string:\n" + responseString + " (Line: " + ex.LineNumber + ", Position: " + ex.LinePosition + ", Message: " + ex.Message + ")"); resp = null; } catch (System.Exception ex) { Log.Error("Unexpected Exception: " + ex.ToString()); } if (resp != null && resp.AccessToken != null && resp.RefreshToken != null) { StoreNewTokens(resp.ExpiresIn, resp.AccessToken, resp.RefreshToken); Log.Info("Refreshed tokens"); if (refreshedAuthorization != null) { refreshedAuthorization.Invoke(); } return(true); } Log.Error("Something went wrong while trying to refresh access- and refresh-tokens"); m_CurrentAccessToken = null; m_CurrentRefreshToken = null; Properties.Settings.Default.accessToken = null; Properties.Settings.Default.refreshToken = null; Properties.Settings.Default.Save(); if (lostAuthorization != null) { lostAuthorization.Invoke(); } return(false); }
static public void RequestTokens(string _PIN) { string url = "https://api.imgur.com/oauth2/token"; string responseString = string.Empty; using (WebClient wc = new WebClient()) { //t.Headers[HttpRequestHeader.Authorization] = "Client-ID " + m_ClientID; try { var values = new System.Collections.Specialized.NameValueCollection { { "client_id", m_ClientID }, { "client_secret", m_ClientSecret }, { "grant_type", "pin" }, { "pin", _PIN } }; byte[] response = wc.UploadValues(url, "POST", values); responseString = System.Text.Encoding.ASCII.GetString(response); } catch (System.Net.WebException ex) { if (ex.Response == null) { if (networkRequestFailed != null) { networkRequestFailed.Invoke(); } } else { System.IO.Stream stream = ex.Response.GetResponseStream(); int currByte = -1; StringBuilder strBuilder = new StringBuilder(); while ((currByte = stream.ReadByte()) != -1) { strBuilder.Append((char)currByte); } responseString = strBuilder.ToString(); } } catch (System.Exception ex) { Log.Error("Unexpected Exception: " + ex.ToString()); } } if (responseString == string.Empty) { return; } APIResponses.TokenResponse resp = Newtonsoft.Json.JsonConvert.DeserializeObject <APIResponses.TokenResponse>(responseString, new Newtonsoft.Json.JsonSerializerSettings { PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects }); if (resp != null && resp.AccessToken != null && resp.RefreshToken != null) { StoreNewTokens(resp.ExpiresIn, resp.AccessToken, resp.RefreshToken); Log.Info("Received tokens from PIN"); StartTokenThread(); if (obtainedAuthorization != null) { obtainedAuthorization.Invoke(); } } else { Log.Error("Something went wrong while trying to obtain access and refresh tokens"); } }