Tutorial: Einen Pinnwandeintrag bei Facebook mit PHP erstellen

Gerade habe ich eine Mail bekommen, ob denn mein Tutorial „Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil 1)“ auch mit PHP möglich sei – ja, klar. Zwar gibt es dazu schon viele Tutorials online, deshalb hier nur ganz kurz:

Schritt 1-5: identisch wie in meinem Tutorial zu C#

Schritt 6: So sieht dies in PHP aus:

#!/usr/local/bin/php5

<?php

// Tutorial: Facebook API mit PHP Bordmitteln

echo "Tutorial: Facebook API mit PHP Bordmitteln";
echo "\n\n";

// OAuth Tokens
$accesstoken = "???";

//z.B. mein Feed:
$APIurl = "https://graph.facebook.com/me/feed";

$nachricht="Hallo dies ist ein Test!";

//Request aufbauen
$params="message=".rawurlencode($nachricht);
$params.="&access_token=".$accesstoken;

echo "n\Parameter: $params\n\n";

// POST vorbereiten & ausführen
$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $params
  )
);
$result = file_get_contents($APIurl, false, 
   stream_context_create($opts));

// Falls gewünscht das Ergebnis ausgeben
echo "\n\nResult:\n" . $result;

// und ggf. json umwandeln
$daten=json_decode($result);

//um z. B. die ID auszugeben:
echo "ID des neues Posts: " . $daten->id;

echo "\n\n... das war's!\n";

?>

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, PHP, Programmierung, Social Networks abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

23 Kommentare zu Tutorial: Einen Pinnwandeintrag bei Facebook mit PHP erstellen

  1. Marco sagt:

    Ach, guck, da steht es ja oben schon – mal Browser aktualisieren hätte ich auch können… 😉

  2. Marco sagt:

    Okay – Lösung bzw. Denkfehler gefunden.
    Zu beachten ist, dass es zwei Accesstokens gibt – einen für /me (USER-Seiten) und eine für die Fanpage/Vereinnsseite.
    Wie letzterer erzeugt wird, habe ich hier dann gefunden:
    http://frank-it-beratung.com/blog/access-token-manager/
    🙂
    Danke.

  3. Marco sagt:

    Nachtrag:
    Habe noch ein bisschen herumprobiert…
    Wenn ich als $APIurl = „https://graph.facebook.com/me/feed“; angebe, funktioniert es,
    gebe ich aber an: $APIurl = „https://graph.facebook.com/meinevereinsseite/feed“; dann funktioniert es nicht. Ich (USER) bin aber auf meiner Vereinsseite als Admin eingetragen.
    So – jetzt weiß ich wirklich nicht mehr weiter…
    und würde mich über einen Tip freuen.
    Danke 🙂

  4. Marco sagt:

    Erstmal vielen Dank für die Tips und Tricks hier überall.
    Gut finde ich, dass Deine Code-Beispiele nicht die fb-SDK verwenden, so kann mit dem Code schnell ein Erfolgserlebnis erzielt werden.
    Wenns denn läuft… 😉
    Anscheinend habe ich da noch ein grundlegendes Verständnisproblem…

    Ich verwalte auch die Seite eines Vereins und möchte mit PHP in fb Termine anlegen, die schon bei uns in der Datenbank liegen (also doppelte Eingabe vermeiden).

    Um einen AccessToken zu erstellen (z.B. mit dem AT-Manager), benötige ich eine App-ID.
    Aber woher bekomme ich diese für die Vereinsseite??

    Laut Deinem früheren Tutorial wohl hier: http://www.facebook.com/developers/createapp.php bzw. fb leitet um nach: https://developers.facebook.com/
    Dort lässt mich fb aber nur eine App-ID erstellen, wenn ich vorher auf http://www.facebook.com als USER eingeloggt bin – nicht wenn ich für die Seite eingeloggt bin.
    (Meldung: Users not logged into their personal account cannot access developers.facebook.com)

    Ich benötige aber doch wohl eine ID für die SEITE, oder wie jetzt??
    Irgendwie habe ich mich da bissl verrannt… :-/

    • Simon A. Frank sagt:

      Du benötigst eine Id für die App (also das PHP-Script) – egal, ob damit später als User oder Page „gearbeitet“ wird (siehe dazu auch meine andere Antwort).

  5. Jojo sagt:

    Hi,
    ist ein nettes script funktioniert auch aber gibt es eine möglichkeit ein Bild zu posten?
    oder besser wäre wenn ich einen Link Poste das dann zusätzliche infos wie zb. Bild und beschreibung mit gepostet wird

  6. lczwelch sagt:

    Da hätte man zur Not auch noch selber drauf kommen können. Funktioniert 😉 Danke.

  7. lczwelch sagt:

    Hi, leider bekomme ich das Script nicht zu laufen. Ich habe den access_token mit deinem Tool für eine Fanseite auf Facebook generiert. Wenn ich das Script aber nun auf der Kommandozeile ausführe, wird die Message nicht gepostet, sondern ich bekomme eine Menge Quellcode von FB ausgegeben. Wenn man sich diesen anschaut, macht das nicht so wirklich Sinn, denn es steht im Prinzip drin das mein Browser nicht von FB unterstützt wird und ich diesen doch bitte aktualisieren soll.

    Woran könnte das wohl liegen?

    • Simon A. Frank sagt:

      Hallo, spontan fällt mir da nichts ein, woran dies bei Dir liegen könnte – aber Du könntest mal versuchen, den Header zu erweitern und einen Browser „vorzutäuschen“:

      $opts = array(‚http‘ =>
      array(
      ‚method‘ => ‚POST‘,
      ‚header‘ => ‚Content-type: application/x-www-form-urlencoded\r\n‘ . ,
      ‚User-agent: Mozilla/5.0‘,
      ‚content‘ => $params
      )
      );

  8. procta2 sagt:

    manged server, daher file_get_contents() nicht möglich.
    gibts ne alternative?

    • Simon A. Frank sagt:

      Leider nein, zumindest fällt mir spontan nichts ein. Wenn man die „echte“ php.ini nicht ändern kann gibt es bei manchen Providern die Möglichkeit, eine eigen php.ini zu erstellen, die die entsprechenden Einstellungen überschreibt. Also einfach eine Datei „php.ini“ im selben Ordner anlegen, die nur die Zeile

      allow_url_fopen = true

      enthält. Hilft das vielleicht?

  9. Danke! Großartig, es funktioniert!

  10. Simon A. Frank sagt:

    Ob Du als Person oder Seite „handelst“ hängt davon ab, welches Access-Token Du verwendest. Mit meinem Tool (http://frank-it-beratung.com/blog/2011/10/14/neue-version-access-token-manager-jetzt-auch-mit-google-unterstutzung/) kann Du Dir auch Access-Token für Deine Seiten generieren: 1) App-ID eingeben, 2) „get Access-Token“ klicken 3) „get Access-Token for pages“ klicken und den gewünschten Token kopieren! Schöne Grüße, Simon

  11. Kann es sein, dass ich dann als Person auf die Timeline der Seite schreibe statt als „Seite“?

  12. Simon A. Frank sagt:

    Hallo Guido, ja: „me“ steht für die eigene Pinnwand. Auf Fan-Pages sieht das so aus:

    https://www.facebook.com/NameDerFanPage/feed

    Statt den Namen kann man auch die ID schreiben. Und natürlich braucht man entsprechende Berechtigung vom Besitzer der Seite.

  13. Diese URL ist für die eigene Pinwand, oder?
    $APIurl = „https://graph.facebook.com/me/feed“;

    Wie schreibe ich denn auf eine Facebook-Page statt in meine eigene Timeline?

  14. Simon A. Frank sagt:

    Wer ein Event erstellen möchte kann folgendes Tutorial lesen, das ich gestern gepostet habe: http://frank-it-beratung.com/blog/2012/05/31/tutorial-eine-event-bei-facebook-mit-php-erstellen/

  15. eMBae sagt:

    Kann es sein, dass das ganze nicht mehr funktioniert?

    • Simon A. Frank sagt:

      Nein, das funktioniert noch bestens. Wie lautet genau die Fehlermeldung? Ist vielleicht file_get_contents() für URLs deaktiviert? Dafür einfach in der php.ini folgende Zeile einfügen bzw. von false auf true setzen:

      allow_url_fopen = true

  16. Bei der Migration auf einen anderen Server ist dieser Post „verloren“ gegangen und war einige Tage nicht sichtbar, ist aber seit heute wieder online!

Kommentar verfassen