3

Facebook – Post an Fanpage – Wall

Posted August 27th, 2010 in facebook and tagged , , , , , by admin

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 =&gt; $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.

3 Responses so far.

  1. Volker Volker says:

    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

  2. Tuner Tuner says:

    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

  3. admin admin says:

    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

Leave a Reply