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
Ach, guck, da steht es ja oben schon – mal Browser aktualisieren hätte ich auch können… 😉
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.
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 🙂
Hallo Marco,
Danke für Dein Feedback – ich vermute, die Antwort findest Du im ersten Kommentar auf folgender Seite:
http://frank-it-beratung.com/blog/access-token-manager/
Falls nicht melde Dich einfach nochmals, dann helfe ich gerne!
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… :-/
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).
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
Hi Jojo, klar funktioniert hier alles 🙂 EIn Bild kann man auch leicht posten, hier habe ich dazu was geschrieben (Veranstaltung mit Bild):
http://frank-it-beratung.com/blog/2012/09/29/tutorial-eine-event-mit-bild-bei-facebook-mit-php-bordmitteln-erstellen/
Da hätte man zur Not auch noch selber drauf kommen können. Funktioniert 😉 Danke.
kein Problem, gerne!
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?
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
)
);
manged server, daher file_get_contents() nicht möglich.
gibts ne alternative?
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?
Danke! Großartig, es funktioniert!
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
Kann es sein, dass ich dann als Person auf die Timeline der Seite schreibe statt als „Seite“?
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.
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?
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/
Kann es sein, dass das ganze nicht mehr funktioniert?
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
Bei der Migration auf einen anderen Server ist dieser Post „verloren“ gegangen und war einige Tage nicht sichtbar, ist aber seit heute wieder online!