/// <summary> /// Gets the request token. /// </summary> /// <returns></returns> public static OAuthTokenResponse GetRequestToken() { string callbackAddress = Config.EasyTwitterConfigHelper.GetCallBackUrl; WebRequestBuilder builder = new WebRequestBuilder( new Uri("https://api.twitter.com/oauth/request_token"), HTTPVerb.POST, new OAuthTokens()); if (!string.IsNullOrEmpty(callbackAddress)) { builder.Parameters.Add("oauth_callback", callbackAddress); } string responseBody = null; try { HttpWebResponse webResponse = builder.ExecuteRequest(); Stream responseStream = webResponse.GetResponseStream(); if (responseStream != null) responseBody = new StreamReader(responseStream).ReadToEnd(); } catch (WebException wex) { throw new ApplicationException(wex.Message, wex); } return new OAuthTokenResponse { Token = ParseQuerystringParameter("oauth_token", responseBody), TokenSecret = ParseQuerystringParameter("oauth_token_secret", responseBody), VerificationString = ParseQuerystringParameter("oauth_verifier", responseBody) }; }
/// <summary> /// Gets the access token. /// </summary> /// <param name="requestToken">The request token.</param> /// <param name="verifier">The pin number or verifier string.</param> /// <returns></returns> public static OAuthTokenResponse GetAccessToken(string requestToken, string verifier) { string denied = String.Empty; if (String.IsNullOrEmpty(requestToken) && String.IsNullOrEmpty(verifier)) { //this is only for web... requestToken = System.Web.HttpContext.Current.Request.QueryString["oauth_token"] as string; verifier = System.Web.HttpContext.Current.Request.QueryString["oauth_verifier"] as string; denied = System.Web.HttpContext.Current.Request.QueryString["denied"] as string ?? String.Empty; } if (String.IsNullOrEmpty(requestToken) || String.IsNullOrEmpty(verifier)) throw new ArgumentNullException("You need to prove the request token and the verifier code"); WebRequestBuilder builder = new WebRequestBuilder( new Uri("https://api.twitter.com/oauth/access_token"), HTTPVerb.GET, new OAuthTokens()); if (!string.IsNullOrEmpty(verifier)) { builder.Parameters.Add("oauth_verifier", verifier); } builder.Parameters.Add("oauth_token", requestToken); string responseBody; try { if (!String.IsNullOrEmpty(denied)) throw new ApplicationException("User didn't log in "); HttpWebResponse webResponse = builder.ExecuteRequest(); responseBody = new StreamReader(webResponse.GetResponseStream()).ReadToEnd(); } catch (ApplicationException aex) { return null; } catch (WebException wex) { throw new ApplicationException(wex.Message, wex); } OAuthTokenResponse response = new OAuthTokenResponse(); response.Token = Regex.Match(responseBody, @"oauth_token=([^&]+)").Groups[1].Value; response.TokenSecret = Regex.Match(responseBody, @"oauth_token_secret=([^&]+)").Groups[1].Value; response.UserId = long.Parse(Regex.Match(responseBody, @"user_id=([^&]+)").Groups[1].Value, CultureInfo.CurrentCulture); response.ScreenName = Regex.Match(responseBody, @"screen_name=([^&]+)").Groups[1].Value; return response; }