Ich wurde vor kurzem beauftragt, an einer Anwendung zu arbeiten, die Facebook-Connect als einen seiner Authentifizierungsmechanismen erfordert.Facebook-Verbindung oder OpenID? Aus der Perspektive eines Entwicklers
Ich arbeite an meiner Facebook-Connect-Lösung und stelle fest, dass es ein Single-Sign-On-Authentifizierungsschema implementiert. Wenn Sie sich bei einer Website anmelden, sind Sie bei allen angemeldet. Persönlich mag ich den Ansatz nicht und finde, dass es schwierig (nicht unmöglich) ist, mit ihm zu arbeiten, wenn er versucht, alle Authentifizierungssysteme durch einen einzigen Prozess zu trichterieren, über den Sie (der Entwickler) die Kontrolle haben. Ich denke auch, dass es unnötig security issues (see Risks of Internet Deployment) einführt, nur um die Benutzerfreundlichkeit etwas zu verbessern.
Während Strategien mit der Technologie zu arbeiten, forschen, ich habe bemerkt, dass die Blogosphäre alles hat aber gesalbt Facebook-Connect als der heilige Gral der Authentifizierung, die jeweils Meinung andere Echo und hoch und stark lautstark, dass ‚OpenID ist zu kompliziert‘ . Zur gleichen Zeit habe ich nicht wirklich viele prominente Entwickler und Sicherheitsexperten gesehen, die Fahnen aufstellen oder ihre Meinung dazu äußern. Meine einzige Erfahrung mit OpenID ist mit StackOverflow und verwandten Websites. Ich hatte auch eine harte Zeit zu verstehen, was es zuerst war, aber sobald ich erkannte, dass ich mich mit meinen Google-Anmeldeinformationen einloggen konnte, erwies sich die Erfahrung als wirklich reibungslos.
Bin ich paranoid oder vermisse etwas, das jeder hat? Ist Facebook-Connect wirklich eine bessere Alternative zu OpenID, oder trinkt jeder jemandes Kool Aid?
EDIT:
Nachdem die Arbeit an diesem bestätige ich, dass die Facebook-Connect-Login-Schema weniger als ideal ist. Das ganze iframe/js/cookie/reload Ding ist hässlich und kann leicht problematisch werden. Die Integration von fb-Login in ein bestehendes Authentifizierungssystem ist eine Übung für sich. Sie müssen Kompromisse eingehen. Ich müsste einen ganz anderen Artikel schreiben, um zu erklären, wie ich es gemacht habe.
Facebook scheint ein bisschen besessen von Single Sign-On für mich zu sein. Die meisten Leute sind sich nicht bewusst, dass Facebook OpenID für ihre eigene Website aktiviert hat, aber selbst die Art, wie sie es implementiert haben, ist die Emulation von SSO und macht es ein wenig sinnlos. Die Art, wie ich dachte, dass OpenID funktionieren sollte: Sie gehen auf eine neue Website, wenn Sie ein OpenId-Konto haben, geben Sie die URL ein, loggen Sie sich bei Ihrem Anbieter ein und Sie sind in. Sie können dann weitere Informationen vervollständigen.
Fb bietet Ihnen nicht die OpenID-Anmeldung im Vordergrund. Stattdessen müssen Sie sich erst registrieren und anmelden, dann zu Kontoeinstellungen gehen und unter Verknüpfte Konten einen OpenID-Anbieter auswählen. Im Gegensatz zu StackOverflow, das den Punkt versteht, können Sie sich bei Facebook jedoch nur mit Ihrer OpenID anmelden, wenn Sie Ihren Provider anweisen, sich an diese Einstellung zu erinnern. Warum? Es macht es mehr SSO-ähnlich. Wenn Sie die Google Box, die sich erinnern soll, nicht überprüfen, funktioniert OpenID nicht auf Facebook.
Der Login beiseite, funktioniert facebook-connect im Allgemeinen, aber es gibt noch viele Ecken zu runden. Ein paar Dinge, die mich dazu brachten, meine Haare zu ziehen und zu verfluchen:
- Die Facebook-Dokumentation ist verstreut und nicht richtig gestrafft. Innerhalb der ersten Stunde nach dem Öffnen haben Sie mindestens 10 Tabs in Ihrem Browser geöffnet. Wenn Sie auf interessante Themen gestoßen sind, die Ihrer Meinung nach in Zukunft nützlich sein könnten, stellen Sie sicher, dass Sie sie mit einem Lesezeichen versehen. Verlassen Sie sich nicht auf Navigationen, um sie wiederzufinden, da Schlüsselartikel manchmal tief vergraben sind. Ich weiß, dass der Wiki-Ansatz zum Dokumentieren von APIs viele Projekte in letzter Zeit faul gemacht hat, aber gewöhnlich ist dies Facebook. Sie sollten die Mittel haben, ein Team einzustellen, um angemessene Benutzerhandbücher bereitzustellen. Denken Sie also daran, sich einen schönen Ordner mit Lesezeichen für Facebook zu erstellen, bevor Sie beginnen.
- Es gibt viele Methoden in der API, viel Glück, ein Beispiel zu finden, wie man sie benutzt, man muss sich auf Instinkt verlassen.
- oft, wenn etwas nicht funktioniert, wie Sie es wünschen, niemand weiß warum. Beim Besuch von Forumseiten werden Erklärungen in Form von Hypothesen und Gerüchten gegeben. z.B. Warum haben manche Anwendungen bei der Anmeldung ein Popup-Anmeldefenster, wenn andere einen modalen js-Dialog haben? Ist es möglich, dieses Verhalten zu kontrollieren? niemand ist sicher. Es wird gemunkelt, dass Facebook einen Test durchführt, ohne dass jemand davon erfährt.
- nicht alles funktioniert wie beworben. d. h., Sie könnten dazu ermutigt werden, eine Funktion zu verwenden, wertvolle Zeit damit zu verschwenden, sie zu implementieren, zu debuggen und dann herauszufinden, dass sie nicht mit facebook-connect funktioniert, wenn Sie sie in einen try/catch-Ausnahme-Handler setzen. z.B. feed.publishUserAction.
- facebook versucht zu hart, benutzerfreundlich zu sein. Sie verschwenden wertvolle Ressourcen, indem sie eine Automagie-API einsetzen, die nur halb so lange funktioniert (xfbml), anstatt Entwickler dazu anzuregen, ihr hart erarbeitetes Wissen zu nutzen, indem sie die grundlegendsten Dinge verwenden, die die meiste Zeit funktionieren (pseudo sql + html). z.B. Ich verschwendete Zeit damit, eine Kombination aus ajax/xfbml/js zu verwenden, um Freunde von ihrem Server zu holen. Es würde für ein paar Anfragen funktionieren und dann aufhören zu arbeiten. Ich entschied mich dann, die Daten direkt aus ihrem db mit ihrer Facebook-Abfragesprache (fql) zu ziehen und mein eigenes Markup in HTML zu erstellen. arbeitete 100%. Mein Rat an Sie, wenn Sie ein echter Entwickler sind, kaufen Sie nicht in das "alles ist einfach" Mantra, dass Facebook versucht, jeden zu füttern, ist es nicht. Machen Sie sich nicht nur mit der Facebook-Programmiersprache (PHP, Python, Java, usw.) Ihrer Programmierplattform vertraut, sondern lernen Sie auch, was Sie direkt von Ihrem Server mit fql abrufen können und was Sie mit dem Browser tun können (JS Client API) verwirrt mit den fbjs). Sie können gut finden, dass die späteren 2 alles sind, was Sie brauchen, um die meisten Dinge zu tun.
Ich bin mir sicher, die Liste endet nicht dort, aber von der Spitze meines Kopfes ist es hier.
Große Frage! – typeoneerror
@mike, ich bin damit einverstanden, es einfach zu halten - benutze nur FQL und die Javascript API wann immer es möglich ist. Das mache ich mit meiner Friend-Locator-Web-App. –