public TwitterUser GetUser(string consumerKey, string consumerSecret, string oauthToken, string oauthVerifier) { var oauthParameters = new OAuthParameterSet(consumerKey, consumerSecret, oauthToken) { {OAuthParameter.Verifier, oauthVerifier} }; string response; using (var webClient = new WebClient()) { response = webClient.DownloadString(GetAccessTokenUri(), oauthParameters); } if (response == null) throw new InvalidOperationException("That didn't work then."); Dictionary<string, string> values = response.Split('&').Select(section => section.Split('=')).ToDictionary( bits => bits[0], bits => bits[1]); return new TwitterUser { Token = values["oauth_token"], TokenSecret = values["oauth_token_secret"], UserId = long.Parse(values["user_id"]), ScreenName = values["screen_name"] }; }
private string GetOAuthToken(string consumerKey, string consumerSecret, Uri callback) { var oauthParameters = new OAuthParameterSet(consumerKey, consumerSecret) { {OAuthParameter.Callback, callback.ToString()}, }; string response; using (var webClient = new WebClient()) { response = webClient.UploadString(GetRequestTokenUri(callback), string.Empty, oauthParameters); } if (response == null) throw new InvalidOperationException("That didn't work then."); Dictionary<string, string> values = response.Split('&').Select(section => section.Split('=')).ToDictionary( bits => bits[0], bits => bits[1]); return values["oauth_token"]; }
// ReSharper restore InconsistentNaming // ReSharper disable InconsistentNaming public static void UploadStringAsync(this WebClient webClient, Uri uri, string body, OAuthParameterSet parameterSet) { webClient.Headers.Set("Authorization", parameterSet.GetOAuthHeaderString(uri, "POST")); webClient.UploadStringAsync(uri, body); }
// ReSharper restore InconsistentNaming // ReSharper disable InconsistentNaming public static void DownloadStringAsync(this WebClient webClient, Uri uri, OAuthParameterSet parameterSet) { webClient.Headers.Set("Authorization", parameterSet.GetOAuthHeaderString(uri, "GET")); webClient.DownloadStringAsync(uri); }