Imports System Imports System.Data Imports System.Configuration Imports System.Web Imports System.Net Imports System.IO Imports System.Collections.Specialized Public Class OAuth_Twitter Dim Oauth As New OAuth.OAuthBase Public consumerKey As String = "CgZiTeNqGk2c0eZSdb9qg" Public consumerSecret As String = "Sf7DGMTiK4cyU8qOuqOWX4yCNCwAdcRAlAj02cOA" Public token As String = "" Public tokenSecret As String = "" Public Const REQUEST_TOKEN As String = "http://twitter.com/oauth/request_token" Public Const AUTHORISE As String = "http://twitter.com/oauth/authorize" Public Const ACCESS_TOKEN As String = "http://twitter.com/oauth/access_token" Public Function AuthorizationLinkGet() Dim ret As String = Nothing Dim response As String = OAuthWebRequest("GET", REQUEST_TOKEN, String.Empty) If (response.Length > 0) Then REM response contains token and token secret. We only need the token. Dim qs As NameValueCollection = HttpUtility.ParseQueryString(response) If (Not qs.Item("oauth_token") = Nothing) Then ret = AUTHORISE & "?oauth_token=" & qs.Item("oauth_token") End If End If Return ret End Function Public Sub AccessTokenGet(ByVal authToken As String) Dim response As String = oAuthWebRequest("POST", ACCESS_TOKEN, String.Empty) If (response.Length > 0) Then REM //Store the Token and Token Secret Dim qs As NameValueCollection = HttpUtility.ParseQueryString(response) If (Not qs.Item("oauth_token") = Nothing) Then Token = qs.Item("oauth_token") End If If (Not qs.Item("auth_token_secret") = Nothing) Then TokenSecret = qs.Item("oauth_token_secret") End If End If End Sub Public Function oAuthWebRequest(ByVal Method As String, ByVal url As String, ByVal postData As String) Dim outUrl As String = "" Dim querystring As String = "" Dim ret As String = "" REM //Setup postData for signing. REM //Add the postData to the querystring. If (Method = "POST") Then If (postData.Length > 0) Then REM //Decode the parameters and re-encode using the oAuth UrlEncode method. Dim qs As NameValueCollection = HttpUtility.ParseQueryString(postData) postData = "" For Each key As String In qs.AllKeys If (postData.Length > 0) Then postData &= "&" End If qs.Item(key) = HttpUtility.UrlDecode(qs.Item(key)) qs.Item(key) = HttpUtility.UrlEncode(qs.Item(key)) postData &= key + "=" & qs.Item(key) next End If If (url.IndexOf("?") > 0) Then url &= "&" Else url &= "?" End If url &= postData End If Dim URI As New Uri(url) Dim nonce As String = Oauth.GenerateNonce() Dim timeStamp As String = Oauth.GenerateTimeStamp() REM //Generate Signature Dim sig As String = Oauth.GenerateSignature(URI, _ consumerKey, _ consumerSecret, _ token, _ tokenSecret, _ Method, _ timeStamp, _ nonce, _ outUrl, _ querystring) querystring &= "&oauth_signature=" & HttpUtility.UrlEncode(sig) REM //Convert the querystring to postData If (Method = "POST") Then postData = querystring querystring = "" End If If (querystring.Length > 0) Then outUrl &= "?" End If ret = WebRequest(Method, outUrl & querystring, postData) Return ret End Function Public Function WebRequest(ByVal Method As String, ByVal url As String, ByVal postData As String) Dim web_Request As HttpWebRequest = Nothing Dim requestWriter As StreamWriter = Nothing Dim responseData As String = Nothing web_Request = System.Net.WebRequest.Create(url) web_Request.Method = Method.ToString() web_Request.ServicePoint.Expect100Continue = False REM //webRequest.UserAgent = "Identify your application please."; REM //webRequest.Timeout = 20000; If (Method = "POST") Then web_Request.ContentType = "application/x-www-form-urlencoded" REM //POST the data. requestWriter = New StreamWriter(web_Request.GetRequestStream()) Try requestWriter.Write(postData) Catch Throw Finally requestWriter.Close() requestWriter = Nothing End Try end if responseData = WebResponseGet(web_Request) WebRequest = Nothing Return responseData End Function Public Function WebResponseGet(ByVal web_Request As HttpWebRequest) Dim responseReader As StreamReader = Nothing Dim responseData As String = "" Try responseReader = New StreamReader(web_Request.GetResponse.GetResponseStream()) responseData = responseReader.ReadToEnd() Catch Throw Finally web_Request.GetResponse().GetResponseStream().Close() responseReader.Close() responseReader = Nothing End Try Return responseData End Function End Class