27 Kommentare zu Facebook API Tutorial: Mit C# ein Foto uploaden (Tutorial Teil 4)

  1. Ich frage mich ja nur was der schwachsing mit „Nachricht“ und den umcoodieren von u zum Byte Array nachricht soll wen die Variable „Nachricht“ ja nicht verwendet wird. Ich versuche seid Tagen den Source zum laufen zu bringen, Fortschritsbalken läuft ja auch aber leider erscheint auf Facebook nie das gepostete bild. Oder brauche ich eine Permission im Socpe zum Posten und wen ja welche. publish_stream und publish_actions sind ja bereits drinnen.

    LG, Herbrich

    • Simon A. Frank sagt:

      Na ja, „schwachsinnig“ finde ich kein angemessener Kommentar und da hält sich meine Begeisterung in Grenzen, hier zu heflen. Schau Dir mal Teil 1-3 an, dazu gehört das und ist hier übrig geblieben.

  2. Alex sagt:

    Super, Dankeschön! Jetzt geht alles! Das war ja mal ne schnelle Antwort 🙂
    Liebe Grüße
    Alex

  3. Alex sagt:

    Achja, und mein access token sieht wie folgt aus: „&scope=publish_stream,manage_pages,offline_access“;

    Liebe Grüße
    Alex 🙂

  4. Alex sagt:

    Hallo Simon,
    es funktioniert so weit alles super. Weisst du vielleicht wie man Fotos als Fanpage posten kann? Leider wird so nur mein eigener Name angezeigt und nicht der Name der Fanpage.

  5. Simon A. Frank sagt:

    Hallo Patrick, kein Problem, gerne (ich suche ja immer nach neuen Ideen für Posts, ich muss mich auch bei Dir für den Tipp bedanken). Die Antwort zu Deiner Frage poste ich gleich hier: http://frank-it-beratung.com/blog/2013/01/08/tutorial-eigene-posts-via-facebook-api-mit-visual-basic-abrufen/

  6. Patrick sagt:

    Ein weiteres Mal Guten Abend. 🙂

    Ich bin Ihnen ein grosses Dankeschön schuldig. Ich häte nicht damit gerechnet einen vollständigen Code samt Tutorial vorgelegt zu bekommen. Ihren Tipp mit C# werde Ich mir zu Herzen nehmen, obwohl für mein Laien-Auge VB eifacher aussieht…

    Ihr Code funktionniert (wie Immer) einwandfrei. Jedoch bekomme ich beim Debuggen den Fehler „Illegales Zeichen im Pfad“. Was ich gemacht habe ist Folgendes: Die „….“ bei AccessToken habe ich durch mein eigenes Token ersetzt, welches ich mit Ihrem wunderbaren Tool bekommen habe.
    Eines ist vielleicht noch von Bedeutung: Das Token, das ich jetzt verwende, habe ich durch einen klick auf „get Acess-Token for pages and apps“ bekommen. Jenes Token, welches ich durch einen klick auf „get Access-Token“ bekomme, weist beim Debuggen in VB einen PathTooLong-Fehler aus. Beide Token wurden (nur) mit dem Scope „publish_stream“ generiert.
    Ich glaube nicht dass das etwas zur Sache tut, aber ich habe noch folgende Zeile hinzugefügt:
    ListBox1.Items.Add(Antwort)
    Ich weiss nicht wo der Hund begraben liegt…

    Ich hoffe ich fange nicht an zu nerven
    Mit freundlichen Grüssen aus der Schweiz
    Patrick

  7. Simon A. Frank sagt:

    Hallo Patrick, wenn Du sowieso anfängst zu Programmieren ist vielleicht C# die bessere Wahl. Aber ich habe hier mal schnell zusammengeschrieben, wie die ersten Schritte in Visual Basci aussehen: http://frank-it-beratung.com/blog/2013/01/08/tutorial-eigene-posts-via-facebook-api-mit-visual-basic-abrufen/

  8. Patrick sagt:

    Guten Abend,

    Danke für die schnelle Antwort. Sie hat in der Tat sehr geholfen. Das Einlesen der Freundesliste kappt nach wie vor perfekt. Jedoch hänge ich ein wenig ihren (VB) Quellcode nicht an die Freundesliste, sondern an den Feed anzupassen. Wie muss ich den Code ausser dem Link noch verändern?

    Entschuldigen Sie die etwas umständliche Frage, doch leider habe ich noch keine grosse Erfahrung in Visual Basic.

    Mit freundlichen Grüssen
    Patrick

  9. Simon A. Frank sagt:

    Hallo Patrick, Danke für Dein Feedback. Ja, das würde gehen. Du kannst mit „https://graph.facebook.com/me/feed“ alle Posts Deines Feeds auslesen. In dem Feld „application“ siehst Du, welche App das gepostet hat – damit kannst Du die Posts Deiner App herausfiltern. In VB kannst Du dann die ListBox mit „ListBox1.Items.Add(…)“ füllen.

    In folgenden Tutorial habe ich erklärt, wie man Daten von Facebook ausliest und weiterverarbeitet (von JSON in eine VB-Klasse) – in dem Tutorial wird die Liste der Freunde ausgelesen, aber mit Deinem Feed geht’s genauso:

    http://frank-it-beratung.com/blog/2011/02/18/tutorial-facebook-vb-csharp-pinnwandeintrag-bei-freund/

    Ich hoffe, das hilft Dir weiter?

  10. Patrick sagt:

    Hallo,
    Eines sei schonmal gesagt: Das Tutorial ist über alle Teile hinweg verständlich und übersichtlich erklärt. So wie man sich’s wünscht. Echt eine tolle Arbeit! 🙂

    Dennoch habe ich eine Frage: Ist es möglich Einträge auf der „Facebook-Startseite“, Einträge meiner „Facebook-Anwendung“ in eine ListBox in VB zu importieren? Wenn man mit ihrer Methode (die übrigens fabelhaft funktionniert) an seine Pinnwand postet, findet sich ja der Zusatz „via [Deine Anwendung]“ wieder. Genau jene Einträge sollten in eine ListBox eingelesen werden.

    Ist das realisierbar?
    Liebe Grüsse Patrick

  11. Franz sagt:

    Hey. Mit Hilfe deines 3ten Teils habe ich die aktuelle Class aufgebaut. Nur ich komme nicht in die Abfrage der (ich nenne es mal) 3ten ebene des Json string (z.B. an wen wurde der Post gesendet „to -> data -> name / id“). Wie ich gelesen habe, kommt Irgendwann noch ein Teil für den Newsfeed. Ich denke das wird dann in die Richtung gehen, womit ich mich derzeit befasse 😉

    Lg Franz

  12. Simon A. Frank sagt:

    Hallo Franz, vielen Dank für Dein Lob 🙂 Das geht schon in die Richtung, hier habe ich das mal mit Klassen erklärt – zwar mit C# aber ganz unten ist auch ein Beispiel in VB – ich hoffe, das hilft Dir weiter?

    http://frank-it-beratung.com/blog/2011/02/18/tutorial-facebook-vb-csharp-pinnwandeintrag-bei-freund/

  13. Franz sagt:

    Hey,

    ich bin echt begeistert, wie ausführlich du deine Anleitungen schreibet. Echt Super. Gibt es eine möglichkeit auch Posts von Facebook in einer Class aufarbeiten zu lassen?

    Ich hänge da nämlich ein wenig.

    {
    „id“: „“,
    „from“: {
    „name“: „“,
    „id“: „“
    },
    „to“: {
    „data“: [
    {
    „name“: „“,
    „id“: „“
    }
    ]
    },
    „message“: „“,
    „actions“: [
    {
    „name“: „“,
    „link“: „“
    },
    […]
    „count“: 4
    }
    }

    Class postmessage_load
    Public Property [postmessage] As newpostmessage
    Get
    Return m_postmessage
    End Get
    Set(ByVal value As newpostmessage)
    m_postmessage = value
    End Set
    End Property
    Private m_postmessage As newpostmessage
    End Class

    Public Class newpostmessage

    Public Property comments() As datamessage
    Get
    Return m_comments
    End Get
    Set(ByVal value As datamessage)
    m_comments = value
    End Set
    End Property
    Private m_comments As datamessage

    End Class

    Public Class datamessage

    Public Property data() As datadata
    Get
    Return m_data
    End Get
    Set(ByVal value As datadata)
    m_data = value
    End Set
    End Property
    Private m_data As datadata

    End Class

    Public Class datadata
    Public Property message() As String
    Get
    Return m_message
    End Get
    Set(ByVal value As String)
    m_message = value
    End Set
    End Property
    Private m_message As String

    End Class

    Damit sollte die class ja eigentlich die Kommentare auslesen, oder?

    Lg Franz

  14. Simon A. Frank sagt:

    Hallo Markus, ich habe Dein Beispiel getestet und bin fast wahnsinnig geworden, weil eigentlich alles richtig aussah! Aber nun habe ich endlich den Fehler gefunden: Das „?“ in Deiner Nachricht ist falsch. Anders als in meinen Beispielen, an die die Nachricht per GET gesendet oder mit der URL verbunden werden sendest Du das als „POST“ – da ist das „?“ dann zu viel und macht den Body des Requests ungültig. Langer Reder kurzer Sinn – so sollte es korrekt aussehen:

    Nachricht = Encoding.UTF8.GetBytes(“message=” + textBox1.Text + “&access_token=” + AccessToken);

  15. Markus Bergt sagt:

    Hallo nochmal, habe die Einstellungen nochmal überprüft und es will immer noch nicht :/
    Code:
    byte[] Nachricht = null;
    byte[] Antwort = null;
    string AccessToken = „Page-Access-Token“;

    string GraphURL = „https://graph.facebook.com/Page-ID/feed“;

    System.Net.WebClient myWebClient = new System.Net.WebClient();
    System.Net.ServicePointManager.Expect100Continue = false;

    Nachricht = Encoding.UTF8.GetBytes(„?message=“ + textBox1.Text
    + „&access_token=“ + AccessToken);
    MessageBox.Show(GraphURL + Nachricht);

    try
    {
    Antwort = myWebClient.UploadData(GraphURL, Nachricht);
    MessageBox.Show(System.Text.Encoding.ASCII.GetString(Antwort));
    MessageBox.Show(„Erfogreich gepostet!“);
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }

    Der Fehler ist entweder (400) Ungültige Anforderung (wenn ich die Page-ID nehme) oder
    (403) Unzulässig (wenn ich den Pagenamespace nehme)

  16. Simon A. Frank sagt:

    Hallo Markus, vielen Dank für Dein Lob & Feedback 🙂 Zu Deiner Frage: Das müsste eigentlich so wie Du es versucht hast funktionieren. Nur ein Hinweis: Um auf einer Seite posten zu können kannst Du also das „normale“ Accesstoken (dann erscheint der Post unter dem Namen „Markus“) oder das Page-Token (dann erscheint der Post unter dem Namen Deiner Seite) verwenden. Das Page-Accesstoken benötigst Du, wenn Du im Namen der Seite posten willst – egal wo – also nicht zum posten auf der Seite. Versuche mal folgendes: Melde Dich ganz normal via Browser bei Facebook an und versuche, als Markus auf die Seite ein Post zu schreiben. Falls das nicht geht hast Du oder der Seiten-Admin das in den Einstellungen deaktiviert – dann geht es natürlich auch nicht via API. Falls das funktioniert generiere ein neues Token mit dem scope „publish_stream“ und versuche es nochmals. Falls es nicht klappt poste oder maile mir die genaue Fehlermeldung, dann helfe ich gerne!

  17. Markus Bergt sagt:

    Hallo ich kann mich dem Lob nur anschließen, super verständlich erklärt. Ich habe leider doch eine Frage: Wie kann ich mit der Page-ID und dem Page-Accesstoken auf einer Seite posten?
    Ich habe es versucht, indem ich „graph.facebook.com/PAGE_ID/feed“ und im Accesstoken den PageAccessToken verwendet hab aber es funktioniert nicht Hife! 😀

  18. Simon A. Frank sagt:

    Vielen Dank für das Feedback. Ich bin mir nicht ganz sicher, was Du meinst? Aber wahrscheinlich einen normalen Post mit Bild? Das wäre in Teil 1 und 2 nachzulesen. Oder habe ich Dich falsch verstanden?

  19. T. Weihs sagt:

    Moin!

    Sehr schönes Tutorials!

    Ich habe dennoch eine Frage: Wie kann ich mir denn beispielsweise zusätzlich das Benutzerbild mit anzeigen lassen in der Freundesliste? Bzw. welchen Link benötige ich dafür?

    MfG

  20. Simon A. Frank sagt:

    Ja, eigentlich schon. Gibt es bei Dir Probleme?

  21. Eirc sagt:

    Funktioniert das immernoch?

  22. piggest sagt:

    Ja, da hat er Recht. Die Tutorials sind Gold wert. Vielen Dank.

  23. Thomas sagt:

    ja, das ist in der tat wesentlich einfacher.. wow. funktioniert auch super. und sogar mit fortschrittsanzeige! besten dank. der webclient ist schon eine feine erfindung 🙂 das sind eindeutig die besten und verständlichsten tutorials zu dem thema die ich überhaupt gesehen habe.
    Alles gute und schöne Grüße
    Thomas

Kommentar verfassen