Ich bin kein großer Fan von Visual Basic, werde aber von vielen Kollegen und Lesern dieses Blogs immer wieder gebeten, das ein oder andere auch mal „ganz einfach“ mit Visual Basic zu zeigen. Auf Wunsch von Patrick (in einem Kommentar zum meinem Post „Facebook API Tutorial: Mit C# ein Foto uploaden„) erkläre ich hier kurz, wie man seine eigenen Posts bzw. Status-Meldungen mit Visual Basic abrufen kann. Das komplizierte ist hier die „Umwandlung“ (genauer: Deserilizierung) von JSON in eine VB-Klasse (Details dazu habe ich hier geschrieben). Damit die Sache übersichtlich bleibt rufe ich bei Facebook nur die Felder status_type, created_time, message und story ab – bei Bedarf ist die Zeile ?fields=… anzupassen sowie die Klasse der „Posts“ entsprechend zu erweitern.
Die „Vorbarbeiten“ habe ich schon häufig erklärt (beispielsweise hier) – im Folgenden nur noch der VB-Code, in diesem Beispiel eine einfache Konsolen-Anwendung:
Dim Antwort As Byte() Dim myWebClient As New Net.WebClient Dim AccessToken As String AccessToken="...." System.Console.WriteLine("Start...") Antwort = myWebClient.DownloadData("https://graph.facebook.com" _ & " /me/posts" _ & "?fields=status_type,created_time,message,story" _ & "&access_token=" & AccessToken) 'bei Bedarf: JSON-Daten ausgeben 'WriteLine(System.Text.Encoding.ASCII.GetString(Antwort)) Dim ser As New DataContractJsonSerializer(GetType(Posts)) Dim ms As New MemoryStream(Antwort) Dim myPosts = TryCast(ser.ReadObject(ms), Posts) For i = 0 To myPosts.Post.Count - 1 System.Console.WriteLine("--------------------") System.Console.WriteLine(i) System.Console.WriteLine(myPosts.Post(i).id) System.Console.WriteLine(myPosts.Post(i).story) System.Console.WriteLine(myPosts.Post(i).message) System.Console.WriteLine(myPosts.Post(i).created_time) System.Console.WriteLine(myPosts.Post(i).status_type) Next i System.Console.ReadLine()
Nicht vergessen: der JSON-Deserilizer ist ab .Net 3.5 verfügbar; um diesen zu verwenden muss im Menu “Projekt” ein Verweis auf “System.Runtime.Serilization” gesetzt werden. Zudem muss folgendes importiert werden:
Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Json
Und hier nun die Klasse (Details dazu habe ich in einem älteren Post beschrieben):
Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Json <DataContract()> Public Class Posts <DataMember(Name:="data")> _ Public Property [Post]() As PostData() Get Return m_PostDate End Get Set(value As PostData()) m_PostDate = value End Set End Property Private m_PostDate As PostData() End Class <DataContract()> Public Class PostData <DataMember()> _ Public Property id() As String Get Return m_id End Get Set(ByVal value As String) m_id = value End Set End Property Private m_id As String <DataMember()> _ Public Property story() As String Get Return m_story End Get Set(value As String) m_story = value End Set End Property Private m_story As String <DataMember()> _ Public Property status_type() As String Get Return m_status_type End Get Set(value As String) m_status_type = value End Set End Property Private m_status_type As String <DataMember()> _ Public Property created_time() As String ' besser wäre Date... Get Return m_created_time End Get Set(value As String) m_created_time = value End Set End Property Private m_created_time As String <DataMember()> _ Public Property message() As String Get Return m_message End Get Set(value As String) m_message = value End Set End Property Private m_message As String End Class
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
Hallo Patrick, Deine Frage hast Du bei einem anderen Artikel gepostet (http://frank-it-beratung.com/blog/2011/11/14/tutorial-mit-c-oder-visual-basic-ein-foto-uploaden-facebook-api-tutorial-teil-4/#comment-4033) hier passt aber die Antwort wohl besser:
Folgende Tipps kann ich noch geben:
1.) Beim Copy&Past des Codes von dem Blog in Visual Studio schleichen sich manchmal „unsichtbare“ Sonderzeichen ein. Deine Fehlermeldung mit dem Access-Token schein eine solche zu sein. Lösche man die gesamte Zeile und schreibe das am besten selbst.
2.) Wenn Du das Access-Token einer Seite nimmst liest Du auch damit die Posts Deiner Seite aus – ist das gewollt? Wahrscheinlich nicht, deshalb muss Du schon „Dein“ Access-Token verwenden.
3.) Schreibe mal zum Test AccessToken=“123″ – da müsste das Programm ohne Fehlermeldung starten, aber natürlich kommt nichts von Facebook. Versuche dann „123“ durch das Access-Token zu ersetzten.
Ich hoffe, das hilft Dir weiter – ansonsten kannst Du gerne der Code per Mail senden.