title: Why is my call to get Twitter user timeline returning "401 Unauthorized."?
body: <p>I have the following code shamelessly taken from <a href="https://dev.twitter.com/discussions/15206" rel="nofollow noreferrer">dev.twitter</a> to get the time line of a specific user:</p>
  
  <pre><code>string endpoint = "https://api.twitter.com/1.1/statuses/user_timeline.json";
  
  string user_name = ".....";
  
  string ConsumerKey = "....";
  string ConsumerSecret = "........";
  string Token = ".......";
  string TokenSecret = "........";
  
  // oauth application keys
  var oauth_token = Token;
  var oauth_token_secret = TokenSecret;
  var oauth_consumer_key = ConsumerKey;
  var oauth_consumer_secret = ConsumerSecret;
  
  // oauth implementation details
  var oauth_version = "1.0";
  var oauth_signature_method = "HMAC-SHA1";
  
  // unique request details
  var oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
  var timeSpan = DateTime.UtcNow
      - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
  var oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString();
  
  var baseFormat = "oauth_consumer_key={0}&amp;oauth_nonce={1}&amp;oauth_signature_method={2}" +
                  "&amp;oauth_timestamp={3}&amp;oauth_token={4}&amp;oauth_version={5}&amp;screen_name={6}";
  
  var baseString = string.Format(baseFormat,
                              oauth_consumer_key,
                              oauth_nonce,
                              oauth_signature_method,
                              oauth_timestamp,
                              oauth_token,
                              oauth_version,
                              user_name
                              );
  
  //&amp;include_rts=true &amp;exclude_replies=false
  
  baseString = string.Concat("GET&amp;", Uri.EscapeDataString(endpoint), "&amp;", Uri.EscapeDataString(baseString));
  
  var compositeKey = string.Concat(Uri.EscapeDataString(oauth_consumer_secret),
                          "&amp;", Uri.EscapeDataString(oauth_token_secret));
  
  string oauth_signature;
  using (HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(compositeKey)))
  {
      oauth_signature = Convert.ToBase64String(hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes(baseString)));
  }
  
  string headerFormat = "OAuth oauth_nonce=\"{0}\", oauth_signature_method=\"{1}\", " +
                        "oauth_timestamp=\"{2}\", oauth_consumer_key=\"{3}\", " +
                        "oauth_token=\"{4}\", oauth_signature=\"{5}\", " +
                        "oauth_version=\"{6}\",screen_name=\"{7}\"";
  var authHeader = string.Format(headerFormat,
                                 Uri.EscapeDataString(oauth_nonce),
                                 Uri.EscapeDataString(oauth_signature_method),
                                 Uri.EscapeDataString(oauth_timestamp),
                                 Uri.EscapeDataString(oauth_consumer_key),
                                 Uri.EscapeDataString(oauth_token),
                                 Uri.EscapeDataString(oauth_signature),
                                 Uri.EscapeDataString(oauth_version),
                                 Uri.EscapeDataString(user_name)
              );
  
  // make the request
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
  request.Headers.Add("Authorization", authHeader);
  request.Method = "GET";
  request.ContentType = "application/x-www-form-urlencoded";
  var response = (HttpWebResponse)request.GetResponse();
  var reader = new StreamReader(response.GetResponseStream());
  var objText = reader.ReadToEnd();
  </code></pre>
  
  <p>However, I'm getting a 401, Unauthorized error on this line:</p>
  
  <pre><code>var response = (HttpWebResponse)request.GetResponse();
  </code></pre>
  
  <p>(as indeed are the last couple of posters on that Twitter developer thread).</p>
  
  <p>Is there any way I can quickly check that my various tokens, keys and secrets are valid and should return the data I'm looking for?</p>