Das Problem: beim Facebook Login kommt es manchmal zu Problemen. Obwohl der User sich authentifiziert hat, gibt getUser 0 zurück.
Auf meiner Seite klickt der User auf LOGIN und wird zu der URL weitergeleitet, die ich mit $facebook->getLoginUrl generiert habe. Er wird dann von Facebook nach einer Authentifizierung der App gefragt und wenn er diese authentifiziert, wird er zurück geleitet auf meine login.php. Hier wird nun getUser abgefragt und da sollte dann EIGENTLICH die FacebookUserId drinstehen. Tut sie aber bei einem frischen User nicht. Mein Script war so ausgelegt, dass im Fall dass getUser nur 0 zurückgibt, erneut weitergeleitet wird auf getLoginUrl. Dies leitet dann wieder zurück auf die login.php und so ergibt sich ein hin und her, bei dem schnell die meisten Browser (Chrome als erstes) abspringen und einen Umleitungsfehler melden.
Die Lösung: ein javascript redirect. Klingt furchtbar, ist auch so, aber half mir, das Problem zu lösen. Gibt mir getUser beim ersten mal 0 zurück, dann zeige ich eine Seite mit einem kurzen Hinweis („..blabla.. Probleme mit Facebook… blabla … hier klicken…“) an. Diese Seite sehen aber die wenigsten, weil sie direkt einen javascript redirect (location.href = …) hat, direkt wieder zur getLoginUrl. Also macht eigentlich auch nichts anderes als mein alter redirect, aber offenbar reicht die kurze Unterbrechung, um Facebook zur Besinnung zu bringen, denn plötzlich ist getUser auch nicht mehr 0 sondern liefert die tatsächliche ID des Nutzers zurück!
Kurz zusammengefasst: wenn getUser = 0, dann eine Seite dazwischenbauen die mit location.href zurück auf getLoginUrl verweist!
[…] habe ja schonmal einen Artikel zum Thema "getUser liefert 0 zurück" geschrieben, aber seit neuestem hilft mir auch das nicht weiter. Egal was ich auch mache, beim […]