Facebook PHP SDK: getUser liefert 0 zurück beim ersten Aufruf

31. Januar 2013

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!

Zend Framework: SQL Queries auflisten

31. Januar 2013

Whoa, mit Firebug und FirePHP und einem kleinen Codeschnipsel kann man sich alle Queries eines Seitenaufrufs ausgeben lassen! DAS ist so nützlich, es treibt mir fast die Tränen in die Augen!

Diese hilfreiche Anleitung hat mich darauf gebracht!

jQuery: Javascript Link, der sich in neuem Tab öffnet (target=_blank)

16. Januar 2013

Eigentlich ist das kein großes Problem. Ich habe ein div, und beim Klick auf das gesamte DIV soll sich in einem neuen Tab eine bestimmte Seite öffnen. Weil in dem DIV aber weitere Links sind (sinnlos, ich weiß) und weil ich generell keinen Link draus machen möchte, stellt sich natürlich die Frage, wie man das DIV entsprechend verlinken kann. window.open macht in einigen Browsern keinen neuen Tab sondern tatsächlich ein neues Fenster auf (nicht Sinn der Sache), diverse Hacks mit dem simulieren eines Link-Klicks gehen nicht in Chrome.
Die Lösung: Man simuliert ein Formular mit einem target _blank, und das macht sogar Chrome mit!

  1. <div onclick="blankLink('http://www.ophidia.net');"> ... </div>

und via Javascript passiert dann folgendes:

  1. function blankLink(page){
  2.     $('body').append('<form id="blankform" action="'+page+'" target="_blank"></form>');
  3.     $('#blankform').submit();
  4.     $('#blankform').remove();
  5. }

Klappt – zumindest nach meinen bisherigen Tests – überall.