Developing a Simple Twitter App with Visual Basic and Windows 8.1


It seems as if I have a fetish for social media apps this month... Probably. Twitter is basically a short message service system for the internet. I have always felt a bit limited with only 140 characters, but I guess Facebook makes up for it. With today's article, I will demonstrate how to make a very basic Twitter application by using VB.

Getting Started

Before you can develop any application that makes use of Twitter's functionalities inside the Twitter API, you have to register an application. This is where Twitter is a bit, let me say, they need a bit of work in this department. First, I am a relatively new Twitter user. I started tweeting, even before I got the confirmation email from them a whole two weeks later. Now, when you navigate to this link, they basically force Fabric on you. Getting any decent documentation on how to use their developer libraries is quite a headache. If it weren't for Google, I probably never would have stumbled upon the documentation and libraries which you can find here and here.

I am a very finicky person, ask my wife... I am a perfectionist, ask my boss... Anyway, due to the fact that I have struggled so much to get to Twitter's tools, I was already put off completely and almost dumped this project. Google the saviour helped again and I came across a few places that thankfully supply third-party Twitter wrappers. If you haven't heard about the term wrapper before, read through this interesting article.

Enough talk, let's play

Our Project

In today's toy project, you will create a simple VB Windows Store app to search through Twitter, as well as to tweet a sample picture with the help of Linq2Twitter—nothing to complicated. If you haven't read through Linq2twitter's extensive documentation yet, I'd advise you to so now before proceeding.


Create a new VB Windows Store app and design it according to Figure 1.

Figure 1: Our design

As usual, you may name the objects anything that please you, but it may differ from my object names.

Add a reference to Linq2twitter, as shown in Figure 2.

Figure 2: Linq2twitter reference

Before proceeding to the code, you have to add a config file and add the following in there:

<add key="consumerKey" value="YourKey"/>
   <add key="consumerSecret" value="YourSecret"/>
   <add key="accessToken" value="AccessToken"/>
   <add key="accessTokenSecret"

Have a read through here on how config files work and what they are. The information you have to supply in here will have been provided by Twitter after you have registered your application on Twitter, as explained before.


Add the Linq2twitter namespace above the Class declaration:

Imports LinqToTwitter

Declare the modular variables:

   Private twitterctx As TwitterContext

   Private twAuth = New SingleUserAuthorizer() With { _
      .CredentialStore = New SingleUserInMemoryCredentialStore() With { _
         .ConsumerKey = ConfigurationManager.AppSettings("consumerKey"), _
         .ConsumerSecret = ConfigurationManager.AppSettings("consumerSecret"), _
         .AccessToken = ConfigurationManager.AppSettings("accessToken"), _
         .AccessTokenSecret = ConfigurationManager.AppSettings("accessTokenSecret") _
   } _

   Private tweet As Status

The first object creates a TwitterContext object. This object handles all the Twitter processing and requests, as you will see a bit later. The second object, twAuth, is your OAuth object. In case you do not know about OAuth, have a read through this interesting article explaining its uses. Basically, it aids in acquiring authentication information of the application, as well as the developer. The last object, tweet, is our physical tweeting object.

Add the next piece of code:

   Private Async Sub btnSearch_Click(sender As Object, _
      e As RoutedEventArgs) Handles btnSearch.Click

      Dim Response = Await (From search In twitterctx.Search _
         Where search.Type = SearchType.Search AndAlso _
         search.Query = "Microsoft").SingleOrDefaultAsync()

      If Response IsNot Nothing AndAlso Response.Statuses _
         IsNot Nothing Then

         Response.Statuses.ForEach(Function(tweet) _
            txtTweet.Text = "User: {0}, Tweet: {1}", _
            tweet.User.ScreenNameResponse, tweet.Text)

      End If

   End Sub

Okay, this looks complicated, but actually isn't. First, I created a Response object and requested it to search Twitter for the string Microsoft. If you haven't seen Async and Await before, have a read through "Async Programming with Visual Basic and Windows 8/8.1", that explains it in detail. I then establish if there is a response or not. If there is a decent response, it must display all the tweets containing the phrase "Microsoft" inside the textbox.

Add the next piece of code:

   Private Async Sub btnTweet_Click(sender As Object, _
      e As RoutedEventArgs) Handles btnTweet.Click
        twitterctx = New TwitterContext(twAuth)

      Dim strTest As String = "Testing... "

      Dim blnSensitive As Boolean = False

      Dim decLat As Decimal = twitterctx.NoCoordinate
      Dim decLong As Decimal = twitterctx.NoCoordinate

      Dim Coords As Boolean = False

      Dim strImage As String = "..\..\images\200xColor_2.png"

      Dim btImage As Byte() = File.ReadAllBytes(strImage)

      tweet = Await twitterctx.TweetWithMediaAsync(strTest, _
         blnSensitive, decLat, decLong, Nothing, Coords, btImage)

      If tweet IsNot Nothing Then
         txtTweet.Text = "Sent" & tweet.Text
      End If
   End Sub

Here, I created a new TwitterContext object with the appropriate authentication. Then, I created a few objects whose values will be fed to the TweetWithMediaAsync method. This method fires and, if it was successful, it will display a simple message string inside the textbox. Okay, I know it's a bit messy, but this is after all only a very basic introduction; I cannot do all the basic work for you as well.


That's it! Short and sweet. Have fun building Twitter apps!

Related Articles



  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date