As we know version 1.0 of Twitter API has been discontinued and many programmers may find it quite troublesome to post message in twitter. In this tutorial, we will guide you step by step on how to post message to Twitter account using oauth method.
First of all, in order to post message to Twitter, we have to create a Twitter app in order to get required access tokens. You will need to visit this site https://apps.twitter.com/.
If you do not have a Twitter account, you will need to register. Once register, you can follow up the following images.
Once created, you will see the following application overview as shown below. We need to create the access token and change the permission level in order to make it work otherwise you will get 401 unauthorized oauth response. Firstly click the Create My Access Token button. This will create the access token at the Read Only permission level.
Once the access token is created, we need to adjust the permission level by going to the settings tab.
Please choose the access option: Read, Write and Access direct messages. Once selected, click the update button.
Once updated, you will notice the token access details will say the application will now have read, write and access direct messages level.
Now we are ready with the coding to post our message in ASP.Net C#.
//Remember to import the following namespaces using System.Net; using System.IO; using System.Security.Cryptography; //function to post message to twitter (parameter string message) private static void PostMessageToTwitter(string message) { //The facebook json url to update the status string twitterURL = "https://api.twitter.com/1.1/statuses/update.json"; //set the access tokens (REQUIRED) string oauth_consumer_key = "Enter your customer key"; string oauth_consumer_secret = "Enter your customer secret"; string oauth_token = "Enter your access token"; string oauth_token_secret = "Enter your access token secret"; // set the oauth version and signature method string oauth_version = "1.0"; string oauth_signature_method = "HMAC-SHA1"; // create unique request details string oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString())); System.TimeSpan timeSpan = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); string oauth_timestamp = Convert.ToInt64(timeSpan.TotalSeconds).ToString(); // create oauth signature string baseFormat = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}"; string baseString = string.Format( baseFormat, oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version, Uri.EscapeDataString(message) ); string oauth_signature = null; using (HMACSHA1 hasher = new HMACSHA1(ASCIIEncoding.ASCII.GetBytes(Uri.EscapeDataString(oauth_consumer_secret) + "&" + Uri.EscapeDataString(oauth_token_secret)))) { oauth_signature = Convert.ToBase64String(hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes("POST&" + Uri.EscapeDataString(twitterURL) + "&" + Uri.EscapeDataString(baseString)))); } // create the request header string authorizationFormat = "OAuth oauth_consumer_key=\"{0}\", oauth_nonce=\"{1}\", " + "oauth_signature=\"{2}\", oauth_signature_method=\"{3}\", " + "oauth_timestamp=\"{4}\", oauth_token=\"{5}\", " + "oauth_version=\"{6}\""; string authorizationHeader = string.Format( authorizationFormat, Uri.EscapeDataString(oauth_consumer_key), Uri.EscapeDataString(oauth_nonce), Uri.EscapeDataString(oauth_signature), Uri.EscapeDataString(oauth_signature_method), Uri.EscapeDataString(oauth_timestamp), Uri.EscapeDataString(oauth_token), Uri.EscapeDataString(oauth_version) ); HttpWebRequest objHttpWebRequest = (HttpWebRequest)WebRequest.Create(twitterURL); objHttpWebRequest.Headers.Add("Authorization", authorizationHeader); objHttpWebRequest.Method = "POST"; objHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; using (Stream objStream = objHttpWebRequest.GetRequestStream()) { byte[] content = ASCIIEncoding.ASCII.GetBytes("status=" + Uri.EscapeDataString(message)); objStream.Write(content, 0, content.Length); } var responseResult = ""; try { //success posting WebResponse objWebResponse = objHttpWebRequest.GetResponse(); StreamReader objStreamReader = new StreamReader(objWebResponse.GetResponseStream()); responseResult = objStreamReader.ReadToEnd().ToString(); } catch (Exception ex) { //throw exception error responseResult = "Twitter Post Error: " + ex.Message.ToString() + ", authHeader: " + authorizationHeader; } } }
You may want to check out our other article about posting message to facebook. Click this article How to post message to facebook in ASP.Net C#.