var timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var oauthTimestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString CultureInfo.InvariantCulture);
var encoding = Encoding.ASCII;
var oauthNonce = Convert.ToBase64String(encoding.GetBytes(DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture)));
var userTimelineUrl = string.Format(“https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name={0}&count={1}”, parameters.ScreenName, parameters.FetchCount); var baseString = string.Format( “&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={5}&oauth_token={3}&oauth_version={4}”, consumerKey, oauthNonce, oauthSignatureMethod, accessToken, oauthVersion, oauthTimestamp);
var compositeKey = string.Concat(Uri.EscapeDataString(consumerSecret), “&”, Uri.EscapeDataString(accessTokenSecret)); string oauthSignature;
using (var hasher = new HMACSHA1(encoding.GetBytes(compositeKey))) { oauthSignature = Convert.ToBase64String( hasher.ComputeHash(encoding.GetBytes( string.Concat(“GET&”, Uri.EscapeDataString(userTimelineUrl), Uri.EscapeDataString(baseString))))); }
var authHeader = string.Format( “OAuth oauth_nonce=”{0}", oauth_signature_method="{1}", oauth_consumer_key="{2}", oauth_token="{3}", oauth_signature="{4}", oauth_timestamp="{5}", oauth_version="{6}"",
Uri.EscapeDataString(oauthNonce), Uri.EscapeDataString(oauthSignatureMethod), Uri.EscapeDataString(consumerKey), Uri.EscapeDataString(accessToken),
Uri.EscapeDataString(oauthSignature), Uri.EscapeDataString(oauthTimestamp), Uri.EscapeDataString(oauthVersion)); ServicePointManager.Expect100Continue = false;
var request = WebRequest.Create(userTimelineUrl);
request.Headers.Add(“Authorization”, authHeader);
request.Method = “GET”;
request.ContentType = “application/x-www-form-urlencoded”;
var responseStream = request.GetResponse().GetResponseStream();