Ein paar Probleme, auf die ich mit der neuen Facebook SDK oder ganz generell gestoßen bin und die dazugehörigen Lösungen:
getSignedRequest – nach dem Betätigen des zurück Buttons geht das nicht mehr. Hat der User „gefällt mir“ geklickt oder nicht?
Vielleicht ist getSignedRequest veraltet. Vielleicht ist es verbuggt. Vielleicht habe ich es falsch benutzt. Es ist mir EGAL. Es hat mich Nerven gekostet und jetzt habe ich das ganze anders gelöst:
$isFan = file_get_contents("https://api.facebook.com/method/pages.isFan?format=json&access_token=" . $fb->getAccessToken() . "&page_id=SEITENID");
if( $isFan == "true"){
//der User hat die Seite 'geliked'
}else{
//der User hat noch nicht auf 'gefällt mir' geklickt
}
Wichtig dabei ist, dass der Inhalt von $isFan tatsächlich ein String ist. if($isFan) sowie if($isFan == true) führen NICHT zu einem richtigen Ergebnis!
Safari auf Mac OS X macht überhaupt komische Sachen
Offenbar hat Mac OS X mal wieder den Vogel abgeschossen. Via Ajax aufgerufene Seiten werfen konsequent Fehler aus, weil sie mit $facebook->getUser() und allen anderen Facebook anfragen nicht klarkommen. Ich hatte irgendwann keinen Bock mehr und habe das ganze schon beim Aufruf meiner Ajax Funktion gelöst:
$.post("vote.php", {id:123, fbUser: 'getUser(); ?>', at: 'getAccessToken(); ?>'} , function(r){ ... });
Damit gebe ich userID und, weil ich schon dabei bin, accesstoken auch gleich mit. Dann kanns mir schnurz sein, ob Safari rumzickt oder nicht.
Wie komme ich an den Usernamen ?
Dann würd ich für den Wallpost auch ganz gern wissen, wie mein Facebook User so heißt. Früher hab ich das mit $fb->api(„/me“) gemacht, aber auch das wollte mit der neuen SDK nciht mehr so recht. Deshalb die neue Version:
$name = json_decode(file_get_contents('http://graph.facebook.com/'.$fbUser))->name;
…Fazit…
In den letzten Stunden frustrierender Recherche hat sich Facebook auf den zweiten Platz meiner Hassliste hochgekämpft und wird damit nur noch übertrumpft von Typo3. Mal sehn, ob es bald einen neuen Spitzenreiter gibt….