PHP Mit der Facebook API auf eine Seite Posten.

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
965
Hallo, ich möchte folgendes Umsetzen: Ich möchte mit der Facebook API auf eine Seite(nicht an eine Pinnwand) posten.

Ich habe mir ein Facebook-Konto(meinen Administrator) angelegt, mit diesem Konto habe ich eine Seite und eine App angelegt.
Ich habe mit der API einen Login durchgeführt(Berechtigungen: manage_pages, publish_actions, read_stream, publish_stream).

login.php
PHP:
require_once 'facebook.php';

FacebookSession::setDefaultApplication($appId, $appSecret);
echo getLoginUrl($appId, $appSecret);

echo getLoginUrl()

Habe mir den einen long live Accesstoken erzeugt und weggeschrieben.

fb_login.php
PHP:
require_once 'facebook.php';

$helper = new FacebookRedirectLoginHelper(getRedirectUrl(), $appId, $appSecret);

FacebookSession::setDefaultApplication($appId, $appSecret);
$session = $helper->getSessionFromRedirect();
$accessToken = $session->getAccessToken();
$longLivedAccessToken = $accessToken->extend();
	
echo "Token: $longLivedAccessToken";

Ich habe mir die ID der Seite geholt und weggeschrieben.
und versuche jetzt einen Post auf die Seite zu machen.

post.php
PHP:
require_once 'facebook.php';

$accessToken= "..."; //Mein Accesstokem vom Administrator
$pageId = "...";

FacebookSession::setDefaultApplication($appId, $appSecret);
	
$session = new FacebookSession($accessToken);

//Ich hole mir einen Token für meine Seite
$request = new FacebookRequest($session, 'GET', '/'.$pageId, array('fields' => 'access_token'));
$siteToken = $request->execute()->getGraphObject()->asArray();
$siteToken = $siteToken['access_token'];

//Auf die Seite posten
$params = array(
	'access_token'	=> $siteToken,
	'page_id'		=> $pageId,
	'name'			=> 'Name',
	'caption'		=> 'Überschrift',
	'description'	=> 'Beschreibung',
	'message'		=> 'Nachricht...'
);
$request = new FacebookRequest($session, 'POST', '/'.$pageId.'/feed', $params);
$pagePost = $request->execute()->getGraphObject()->asArray();
	
echo "<pre>"; var_dump($pagePost); echo "</pre>";

So das ganze läuft auch durch, mit meinem Administrator, oder der Seite selber sehe ich den Post, der Post ist öffentlich, aber andere Benutzer sehen auf der Seite nichts.

Um zu testen ob es an der Seite selber liegt, habe ich über den Browser ein Test-Post erzeugt, dieses ist für alle sichtbar.

Was mache ich falsch? Habe ich was vergessen?

achja, wenn ich mir alle Posts auflisten mit einem GET request, ist der Post da...

facebook.php
PHP:
session_start();

$appId		= "...";
$appSecret	= "...";

function getRedirectUrl() {
	$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";
	return $protocol.'://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/fb_login.php';
}

function getLoginUrl($appId, $appSecret) {
	$permissions = array("manage_pages", "publish_actions", "read_stream", "publish_stream");
	$helper = new FacebookRedirectLoginHelper(getRedirectUrl(), $appId, $appSecret);
	return $helper->getLoginUrl($permissions);
}

EDIT:
Wenn ich versuche, als anderer Benutzer auf den Post zuzugreifen, dann kommt das:
Dieser Inhalt ist derzeit nicht verfügbar
Die von dir ausgewählte Seite kann derzeit nicht angezeigt werden. Es könnte sein, dass diese vorläufig nicht zur Verfügung steht, der von dir verwendete Link abgelaufen ist oder du nicht die erforderliche Genehmigung hast, um die Seite zu betrachten.
 
Zuletzt bearbeitet:
Solang du die App die du auf Facebook erstellt hast nicht published können nur eingetragene Entwickler die Posts sehen. So zu sagen zum Debuggen.

Heißt du musst erst den ganzen Publish Kram von Facebook erledigen. Und das is glaub ich nicht wenig was ich mal gesehen hab.
 
Für die Post on Wall Geschichte musst du in der Facebook App eine umfangreiche Erläuterung abgeben (da wo evtl. schon das Rufezeichen aufblinkt ;)). Diese wird dann geprüft und evtl. erlaubt.
Bis dahin kannst du das nur vom selben Account aus machen.

@DaVian
Wenn sandboxed dann sollte auch der Dev-Konto Acc nicht funktionieren.

mfg,
Max
 
Zurück
Oben