Imports System.Net Imports System.Text Public Class Form1 Private Sub ButtonGetAccessToken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGetAccessToken.Click 'WebClient anlegen Dim myWebClient As New WebClient() 'oAuth anlegen Dim oAuth As New OAuthBase() 'Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen System.Net.ServicePointManager.Expect100Continue = False 'ggf Umlaute in PW fixen Dim UriRfc3986CharsToEscape As New List(Of String)({"!", "*", "'", "(", ")"}) Dim Passwort As String = TextBoxPassword.Text Dim escaped As New StringBuilder(Uri.EscapeDataString(Passwort)) For i As Integer = 0 To UriRfc3986CharsToEscape.Count - 1 escaped.Replace(UriRfc3986CharsToEscape(i), Uri.HexEscape(UriRfc3986CharsToEscape(i)(0))) Next Passwort = escaped.ToString() Dim FFReqParameters As String = "ff_username=" + TextBoxUsername.Text & "&ff_password=" & Passwort Dim OAuthReqParameters As String = "" Dim RequestMethod As String = "GET" 'die Tokens und Keys Dim AccessToken As String = "" Dim AccessSecret As String = "" Dim ConsumerKey As String = "???" Dim ConsumerSecret As String = "???" ' Zeit und Nonce lassen sich mit Hilfe von OAuthBase einfach generieren Dim Nonce As String = oAuth.GenerateNonce() Dim Zeitstempel As String = oAuth.GenerateTimeStamp() ' Die URL muss mit Parametern (auch bei POST!) als String und ' URI vorligen - etwas verwirrend, aber so will es OAuthBAse Dim APIUrl As String = "https://friendfeed.com/account/oauth/ia_access_token?" & FFReqParameters Dim APIUri As New Uri(APIUrl) ' Jetzt die Signature generieren ' außerdem wird hier die APIUrl normalisiert ' und OAuthReqParameters generiert Dim signature As String = oAuth.GenerateSignature(APIUri, ConsumerKey, ConsumerSecret, AccessToken, AccessSecret, RequestMethod, _ Zeitstempel, Nonce, APIUrl, OAuthReqParameters) ' die Signatur fehlt noch im vorbereiteten Request OAuthReqParameters = OAuthReqParameters & "&" & "oauth_signature=" & signature Dim AntwortString As String = "" Dim Antwort As Byte() ' Senden ... Try Antwort = myWebClient.DownloadData("https://friendfeed.com/account/oauth/ia_access_token?" & OAuthReqParameters) AntwortString = System.Text.Encoding.ASCII.GetString(Antwort) System.Windows.Forms.MessageBox.Show(AntwortString) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) Return End Try 'Jetzt das Access-Token gan "mnauell" aus der Antwort filtern Dim tokensplit As String() = AntwortString.Split(New [Char]() {"&"c}) For Each s As String In tokensplit Dim zeilesplit As String() = s.Split(New [Char]() {"="c}) If zeilesplit(0) = "oauth_token" Then textBoxAccessToken.Text = zeilesplit(1) ElseIf zeilesplit(0) = "oauth_token_secret" Then textBoxAccessTokenSecret.Text = zeilesplit(1) End If Next End Sub Private Sub ButtonNachrichtSenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNachrichtSenden.Click 'WebClient anlegen Dim myWebClient As New WebClient() 'Wer folgende Zeile vergisst wird verzweifeln: myWebClient.Headers.Add("Content-type: application/x-www-form-urlencoded") 'oAuth anlegen Dim oAuth As New OAuthBase() 'Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen System.Net.ServicePointManager.Expect100Continue = False 'ggf Umlaute in Nachricht fixen: Dim UriRfc3986CharsToEscape As New List(Of String)({"!", "*", "'", "(", ")"}) Dim Nachricht As String = TextBoxNachricht.Text Dim escaped As New StringBuilder(Uri.EscapeDataString(Nachricht)) For i As Integer = 0 To UriRfc3986CharsToEscape.Count - 1 escaped.Replace(UriRfc3986CharsToEscape(i), Uri.HexEscape(UriRfc3986CharsToEscape(i)(0))) Next Nachricht = escaped.ToString() Dim FFReqParameters As String = "format=xml&body=" & Nachricht Dim OAuthReqParameters As String = "" Dim RequestMethod As String = "POST" 'die Tokens und Keys Dim AccessToken As String = textBoxAccessToken.Text Dim AccessSecret As String = textBoxAccessTokenSecret.Text Dim ConsumerKey As String = "???" Dim ConsumerSecret As String = "???" ' Zeit und Nonce lassen sich mit Hilfe von OAuthBase einfach generieren Dim Nonce As String = oAuth.GenerateNonce() Dim Zeitstempel As String = oAuth.GenerateTimeStamp() ' Die URL muss mit Parametern (auch bei POST!) als String und vorliegen Dim APIUrl As String = "http://friendfeed-api.com/v2/entry" & "?" & FFReqParameters Dim APIUri As New Uri(APIUrl) ' Jetzt die Signature generieren ' außerdem wird hier die APIUrl normalisiert ' und OAuthReqParameters generiert Dim signature As Byte = oAuth.GenerateSignature(APIUri, ConsumerKey, ConsumerSecret, AccessToken, AccessSecret, RequestMethod, _ Zeitstempel, Nonce, APIUrl, OAuthReqParameters) ' die Signatur fehlt noch im vorbereiteten Request OAuthReqParameters = OAuthReqParameters & "&" & "oauth_signature=" & signature ' Senden ... Dim AntwortString As String = "" Dim Antwort As Byte() Try Antwort = myWebClient.UploadData(APIUri, RequestMethod, Encoding.UTF8.GetBytes(OAuthReqParameters)) AntwortString = System.Text.Encoding.ASCII.GetString(Antwort) System.Windows.Forms.MessageBox.Show("Erfolgt - Antwort: " & AntwortString) Catch ex As WebException System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub End Class