Wenn Ihr von eurer Webseite aus auf eine Fanpage-Wall posten wollt, dann habt Ihr hier ein kleines Tutorial:
1. Bei Facebook anmelden (http://www.facebook.com)
2. Eine neue Facebook-App erstellen (http://www.facebook.com/developers/createapp.php)
3. Der App muss nun ein Name gegeben werden und die Sicherheitsabfrage muss ausgefüllt werden
4. Wichtig sind jetzt die Anwendungs ID (Application ID) und der API-Schlüssen (API-Key)
5. In eurem PHP-Code müsst Ihr jetzt folgende Codes einfügen
<?php
define('FACEBOOK_APP_ID', 'XXXXXXXXXXXXXX'); #APPLICATION ID
define('FACEBOOK_SECRET', 'XXXXXXXXXXXXXX'); #API-KEY
function get_facebook_cookie($app_id, $application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);
?>
5. So als nächstes solltet Ihr noch ein Snippet schreiben das checkt ob Ihr bei Facebook eingeloggt seid:
<?php if ($cookie) { ?>
Your user ID is <?= $cookie['uid'] ?>
<?php } else { ?>
<fb:login-button perms="publish_stream"></fb:login-button>
<?php } ?>
6. Damit der FB-Login-Button anständig gerendert wird muss in euren HTML-Quelltext direkt nach <body>:
<div id="fb-root"></div>
<script>
//XXX = Facebook App - ID
window.fbAsyncInit = function() {
FB.init({
appId : 'XXXXXXXXXXXXXXXX',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
7. Ihr braucht eine Funktion die für euch den Request an die Graph-Api von Facebook stellt:
function makeRequest($url, $params, $ch=null) {
if (!$ch) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
}
$opts = array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERAGENT => 'facebook-php-2.0',
);
$opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
$opts[CURLOPT_URL] = $url;
print_r($opts);
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
8. So und als letztes fehlt noch der Aufruf der den Request abschickt und die Daten an Facebook übermittelt.
$params['message'] = 'This is a test';
$params['access_token']=$cookie['access_token'];
$url = 'https://graph.facebook.com/XXXXXXXXXXXXX/feed'; #XXXXXXXX = ID der Fanpage
//print_r(makeRequest($url, $params));
// print_r(json_decode(file_get_contents($url)));
print_r(makeRequest($url, $params));
Ich werde das wenn ich mal ein bischen Ruhe habe, in eine schöne downloadbare Version hacken. Bis dahin hoffe ich, dass ihr mit dem Code was anfangen könnt.

Hi Jan,
danke für die Anleitung.
Die Funktion makeRequest ist allerdings nicht vollständig:
function makeRequest($url, $params, $ch=null) {
if (!$ch) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
}
… hier müsste noch was kommen.
Cheerio
Volker
Hallo,
postet man nach dem beschriebenen Tutorial unter dem eigenen Namen auf der Fanpage oder als Admin unter dem Namen der Fanpage selbst?
Ich versuche gerade den zweiten Fall hinzubekommen, aber mein Posting wird immer unter meinem Namen statt unter dem Namen der Fanpage geschrieben. Gibt es einen Tipp, wie ich das Problem lösen kann?
Weitere Infos gerne per E-Mail.
Viele Grüße
Ich glaube dazu musst du auf Facebook bescheid geben wie du auftreten möchtest. Unter Konto | Facebook als Seite verwenden
Hilft Dir das?
Gruß Jan