Tutorial: Mit Visual Basic ein Facebook-Event mit Foto-Upload erstellen (Teil 1)

Eigentlich bin ich kein großer Freund von Visual Basic, aber aufgrund vielfachen Wunschs habe ich hier ein kleines Tutorial geschrieben, wie man mit VB ein Event mit Foto erstellt.

1. Vorbereitung: App anlegen und Access-Token generieren – wie ich das z. B. hier beschrieben habe (Punkt 1.-5.)

2. Als nächstes sollte folgendes Formular angelegt werden (in meinem Beispiel mit Visual Studio Express 2010):

Bild1

Hinweis: Für die zwei DateTimePicker verwende ich Format:Custom und dann in CustomFormat: „yyyy-MM-dd HH:mm“

3. So sieht der Code für den Button aus:

Dim Nachricht, Antwort As Byte()
Dim AccessToken As String = "..."
Dim StartZeit, EndZeit As String

' Erstellt ein Event für den User des Access-Tokens
Dim GraphURL As String = _
  "https://graph.facebook.com/me/events"

'WebClient anlegen
Dim myWebClient As New Net.WebClient

'Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen
Net.ServicePointManager.Expect100Continue = False

'Die Start- und Endzeit richtig formatieren...
StartZeit = DateTimePickerStartDatum.Text
EndZeit = DateTimePickerEndDatum.Text
'statt dem Leerzeichen zwischen Datum und 
'Uhrzeit steht ein "T"
StartZeit = Replace(StartZeit, " ", "T")
EndZeit = Replace(EndZeit, " ", "T")
'außerdem muss die Timezone angehängt werden, also
'+0100 - das "+" wird URL-codiert (%2B)
StartZeit = StartZeit & "%2B0100"
EndZeit = EndZeit & "%2B0100"

Nachricht = Encoding.UTF8.GetBytes(
  "name=" & TextBoxVeranstaltung.Text _
  & "&description=" & TextBoxBeschreibung.Text _
  & "&start_time=" & StartZeit _
  & "&end_time=" & EndZeit _
  & "&privacy=OPEN" _
  & "&access_token=" & AccessToken)

Try
  Antwort = myWebClient.UploadData(GraphURL, Nachricht)
  'Erfolgsmeldung (ID des Posts) in JSON
  'MsgBox(System.Text.Encoding.ASCII.GetString(Antwort))
  MsgBox("Event Erfogreich gepostet!")
Catch ex As Exception
  MsgBox("Fehler: " & ex.Message)
  Return
End Try

'jetzt die ID des neuen Events auslesen...

'optimalerweise könnte man JSON deserialisieren, wie
'ich das in meinem Blog beschrieben habe:
'http://bit.ly/YoDmgc

'schneller geht es in diesem Fall mit
'einem regulären Ausdruck - einfach
'die Zahl mit \d extrahieren:

Dim pattern As String = "\d{1,}"
Dim matches As MatchCollection
Dim defaultRegex As New Regex(pattern)
matches = defaultRegex.Matches(
  System.Text.Encoding.ASCII.GetString(Antwort))

If matches.Count > 0 Then
  'Erfolg - EventID in Form schreiben
  LabelEventID.Text = matches(0).Value
Else
  'Fehler
  MsgBox("Keine ID in Antwort gefunden: " _
    & System.Text.Encoding.ASCII.GetString(Antwort))
  Return
End If

'jetzt das Bild uploaden...
GraphURL = "https://graph.facebook.com/" _
  & LabelEventID.Text _
  & "/picture?access_token=" _
  & AccessToken

Try
  Antwort = myWebClient.UploadFile(GraphURL, TextBoxBild.Text)
  'MsgBox(System.Text.Encoding.ASCII.GetString(Antwort))
  MsgBox("Bild erfogreich gepostet!")
Catch ex As Exception
  MsgBox("Fehler: " & ex.Message)
End Try

Tipps:

  • Importiert werden muss „System.Text“ und „System.Text.RegularExpressions“
  • Noch schöner ist ein asynchroner Upload für das Bild, den ich hier beschrieben habe.
  • Bestimmte Sonderzeichen und Umlaute machen in der Beschreibung und im Namen u. U. Probleme – eine Lösung dazu habe ich hier beschrieben.

Im nächsten Teil werde ich noch kurz erklären, wie man hiermit auch gleich alle seine Freunde einladen kann.

P.S.

Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne  – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de

Dieser Beitrag wurde unter API, Facebook, Graph API, Programmierung, Social Networks, Visual Basic veröffentlicht. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu Tutorial: Mit Visual Basic ein Facebook-Event mit Foto-Upload erstellen (Teil 1)

  1. Simon A. Frank sagt:

    Hallo Laura,

    vielen Dank für Dein Feedback – das ist interessant, ich habe da keine Probleme mit „-“ und „:“.

    Hast Du Dir schon mal die String StartZeit ausgeben lassen – diese sollte ungefähr so aussehen:

    2012-08-31T16:00%2B0100

    Welche VisualStudio Version verwendest Du? Dann würde ich mal probieren, ob ich den Fehler reproduzieren kann.

  2. Laura sagt:

    bzw. ich habe gerade getestet eine normale Nachricht auf Facebook zu posten. Das hat einwandfrei funktioniert. Wenn ich jedoch die Zeichen „-“ und „:“ benutze kommt der selbe Fehler wie wenn ich versuche ein Event zu erstellen…daher denke ich es liegt an diesen beiden Zeichen im Datum.?

    Gruß
    Laura

  3. Laura sagt:

    Hallo,

    ich teste gerade deinen Code und bekomme immer einen Fehler.
    Wenn ich Debugge und im Direktfenster den Inhalt von „Nachricht“ abfrage sagt er „Der Wert vom Typ „1-dimensionales Array von Byte“ kann nicht in String konvertiert werden“.
    Ich vermute mal das liegt an „StartZeit“ und „EndZeit“… aber ich weiss mir leider nicht wie ich das lösen soll…
    Ich hoffe du kannst mir da vielleicht weiter helfen?
    Vielen Dank schonmal

    Beste Grüße
    Laura

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.