Hallo
ich habe folgendes Problem.
Ich möchte über ein APP von einer Website auf meine Facebook fanseite posten.
Dies funktioniert aber nur bedingt.
Zum testen habe ich eine Klasse und eine index.php angelegt, darüber läuft alles wunderbar.
Die Klasse und die dazugehörende SDK Bibliothek habe ich ohne Veränderung in das Hauptprojekt eingepflegt und der einzige Unterschied besteht nur beim erzeugen des Objektes.
Mir ist aber folgendes aufgefallen. Wenn ich im Hauptprojekt die Daten posten möchte, klappt es NUR wenn ich vorher mind. 1x über die Testdatei (die eigentlich keine Bewandtnis hat) etwas gepostet habe. Der Code für das Senden ist jedoch komplett identisch.
Ich habe nicht wirklich rausgefunden an was das liegen kann.
Ich habe die App-Einstellungen kontrolliert, die App mehrmals aus dem Account gelöscht und der Verdacht über evtl. falsch gespeicherte Acces Token hat sich auch nicht bestätigt.
Ich weiß kein Rat mehr.
Kann jemand mal schauen ob vllt. im Code irgendetwas falsch ist.
Ich wäre euch sehr dankbar.
Index.php von Testseite
PHP-Code:
require 'class.fbPost.php';
$message = "Das ist ein Test";
$pictureUrl = "http://www.example.com/slider/0000019.jpg";
$link = "www.example.com";
$name = "Example";
$caption = "Example";
$description = "Test";
$facebook = new facebookPost();
$facebook->postfacebook($message, $pictureUrl, $link, $name, $caption, $description);
Hier ein Auszug der Objekterzeugung von der Hauptversion
PHP-Code:
$message = $fb_text;
$pictureUrl = "";
$link = $fb_link;
$name = $fb_name;
$caption = $fb_caption;
$description = $fb_desc;
$facebookSend = new facebookPost();
$facebookSend->postFacebook($message, $pictureUrl, $link, $name, $caption, $description);
Die Klasse die bei beiden Versionen die gleiche ist
PHP-Code:
<?php
require 'fbsdk/src/facebook.php';
class facebookApi{
protected $seitenId;
protected $appId;
protected $secretId;
public function __construct(){
$this->seitenId = "XXXXXX";
$this->appId = "XXXXXX";
$this->secretId = "XXXXXXXXXX";
}
public function fbInstanzieren(){
$facebook = new Facebook(array(
'appId' => $this->appId, // Anwendungs-ID
'secret' => $this->secretId, // Anwendungs-Geheimcode
'cookie' => true, // Zugriff auf die Session durch Cookies erlauben.
));
return $facebook;
}
}
class facebookPost extends facebookApi{
public function __construct(){
parent::__construct();
}
public function postFacebook($message, $pictureUrl, $link, $name, $caption, $description){
$facebook = parent::fbInstanzieren(); // greift auf Elternmethode zu
$seitenId = $this->seitenId;
$appId = $this->appId;
$secretId = $this->secretId;
$token = "";
$user = $facebook->getUser(); // speichert in Variable evtl. bereits eingeloggten User
if ($user){ // Ist User bereits authentifiziert?
try {
$page = $facebook->api('me/accounts');
$result = count($page['data']); // zählt array Index Anzahl(Anzahl Fanseiten im Account)
for($i = 0; $i < $result; $i++){
//stimmen IDs von Fanseite überein?
if($page['data'][$i]['id'] == $seitenId){
$pageDaten[] = $page['data'][$i]; // Infos von gewünschter Fanpage werden gespeichert
$token = $page['data'][$i]['access_token']; // Speichern des token
}
}
//print_r($pageDaten);
print '<pre>' . print_r($page, true) . '</pre>';
// Ausgabe eigentlich aus User
$arguments = array(
'message' => $message,
'picture' => $pictureUrl,
'link' => $link,
'name' => $name,
'caption' => $caption,
'description' => $description,
'privacy' => '{"value": "EVERYONE"}',
'access_token' => $token, // Access Token muss angegeben werden um als Fanseite posten zu können
);
// Versenden der Daten an API
$facebook->api("/".$seitenId."/feed", 'post', $arguments); // seitenID für Fanpage, post Metohde, Daten die versendet werden sollen
print '<pre>' . print_r($arguments, true) . '</pre>';
}
catch (FacebookApiException $e) {
print $e;
}
}
else
{
//$loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream,manage_pages')); // Berechtigungen von APP bei FB abholen, z.B. Seiten verwalten, posten etc.
$loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream,manage_pages,offline_access')); // Berechtigungen von APP bei FB abholen, z.B. Seiten verwalten, posten etc.
echo("<script> top.location.href='" . $loginUrl . "'</script>");
}
}
}
?>
Vllt. kann mir jemand helfen oder hat bereits ähnliche Probleme gehabt.