Wie kann Facebook OAuth 2.0 vollständig serverseitig aktiviert werden?

8

Ich möchte grundsätzlich die Facebook-ID eines bestimmten Nutzers speichern, um mehr Material über Facebook zu erhalten. Idealerweise möchte ich eine Lösung, die weder Javascript noch Cookie verwendet, nur serverseitig, aber es gab kein Beispiel, nur eine Wegbeschreibung, also habe ich eine zusammengestellt, die wir diskutieren können. Hier ist der Code, der meiner Meinung nach funktioniert, wenn ich einen Benutzer einfach mit dem OAuth-Dialog für meine Website verknüpfe:

https://www.facebook.com/dialog/oauth?client_id=164355773607006&redirect_uri=http://www.kewlbusiness.com/oauth

Dann behandle ich es so, um die userdata zu erhalten:

%Vor%

Damit kann ich mich mit Facebook für meine Website einloggen, ohne viel Javascript und Cookies, die wir nicht wollen. Ich wollte "Einloggen mit Facebook" für meine Website aktivieren. Es sollte ohne Cookies und ohne Javascript funktionieren, aber das erste, was sie versuchen, ist Javascript und Cookies. Also habe ich eine Lösung gefunden, die ohne Cookie und ohne Javascript funktioniert, nur OAuth 2.0: Können Sie etwas über meine "Lösung" sagen? Der praktische Nutzen, den ich suche, besteht darin, eine einfache Funktion zu ermöglichen, die FB-Benutzer auf meiner Website tun und Facebook-Accounts zulassen, um sich so einzuloggen, wie es standardisiert wird.

Ich dachte nur, dass es ohne Javascript SDK und ohne Cookie funktionieren muss und es scheint so zu sein. Kannst du mit dieser "Lösung" sagen, was meine Vorteile und Nachteile sind? Ich denke, es ist viel besser als Javascript + Cookie, warum täuschen sie uns, Javascript und Cookie zu verwenden, wenn das minimale Beispiel 100% serverseitig scheint?

Danke

Aktualisieren Es scheint richtig und verhält sich richtig und ich kann auch die userdata mit dem Datatore verwenden und meinen FB-Namen auf die Titelseite ohne Javascript und ohne Cookie rendern, nur python:

%Vor%

mit der Variable fbuser für einen Facebook-Benutzer und der variable Benutzer für einen Google-Nutzer gesteht mir nun zu, Facebook für meine Website ohne Buggy unordentlich unnötiges Javascript + Cookie zu verwenden.

Jetzt könnte ich meinen Facebook-Namen von meiner Website rendern und ansehen, was toll ist, dass es schließlich so funktioniert, wie es von Javascript unabhängig sein soll und kein Cookie benötigt.

Warum empfiehlt die Dokumentation Javascript + Cookie, wenn serverseitige OAuth 2.0 die sauberste Lösung ist? Sind Sie damit einverstanden, dass dies die beste Lösung ist, da es nicht darauf ankommt, ob Sie Javascript oder Cookies verwenden?

Aktualisieren Mögliche doppelte Frage, wenn ich jetzt gesehen habe, dass andere Leute sich nicht mit Server-Code abmelden konnten, mussten sie auf das Javascript-SDK zurückgreifen und eine Anforderung kann sein, dass sie ohne Javascript funktionieren sollte und sollte "lösche" den Cookie und ich musste den Namen des Cookies ändern und obwohl es funktioniert, würde ich gerne deinen Kommentar lesen und / oder testen, wie du denkst, dass mein Projekt dies gelöst hat. Ein Logout-Link wie dieser sollte funktionieren, tut es aber nicht. Wenn ich mich zweimal auslogge, funktioniert das und deshalb ist das ein seltsamer Fehler, da ich es beheben konnte, aber ich weiß immer noch nicht, was Logout einen zweiten Treffer erfordert:

https://www.facebook.com/logout.php?next=http://www.myappengineproject.com&access_token=AAACVewZBArF4BACUDwnDap5OrQQ5dx0jsHEKPJkIJJ8GdXlYdni5K50xKw6s8BSIDZCpKBtVWF9maHMoJeF9ZCRRYM1zgZD

Es sieht so aus, als ob ich nicht der einzige war, der versuchte, Javascript für eine Lösung mit OAuth 2.0 serverseitig komplett zu vermeiden. Die Leute konnten alles machen, aber sie konnten sich nicht abmelden:

Facebook Oauth Logout

Die offizielle Dokumentation für OAuth 2.0 mit Facebook sagt:

  

Sie können einen Benutzer aus seiner Facebook-Sitzung abmelden, indem Sie ihn anweisen   die folgende URL:

     

Ссылка

     

YOUR_URL muss eine URL in Ihrer Websitedomain sein, wie in der   Entwickler-App.

Ich wollte alles serverseitig machen und fand heraus, dass der vorgeschlagene Link den Cookie so verlässt, dass der Logout-Link nicht funktioniert: %Code% Es leitet um, aber es protokolliert den Benutzer nicht von meiner Website. Es schien wie ein Heisenbug, da sich das auf mich änderte und es nicht viel Dokumentation gab. Ich schien trotzdem in der Lage zu sein, die Funktionalität mit einem Handler zu erreichen, der den Cookie so manipuliert, dass der Benutzer tatsächlich ausgeloggt wird:

%Vor%

Wenn Sie also den Handler auf / auth / logout setzen und dies auf den Link setzen, wird der Benutzer effektiv von meiner Site aus protokolliert (ohne den Benutzer hoffentlich und ungeprüft von Facebook abzumelden)

Einige andere Teile meines Codes behandeln die OAuth-Token und Cookie-Lookups für die Oauth-Kommunikation:

%Vor%

Ich habe keinen loginhandler gemacht, da login im Grunde der obige Code bei meinem root-Request-Handler ist. Meine Benutzerklasse ist wie folgt:

%Vor%

Ich habe zwei grundlegende Anbieter verspottet Und ich verwende die Variable current_user für den Facebook-Benutzer und die Variable user für den Google-Benutzer und die Variable fbuser für einen Benutzer, der sich anmeldet und daher keine Übereinstimmung mit dem Cookie hat.

Der Cookie-Lookup-Code, den ich verwende, ist der folgende und ich denke, ich verstehe es und es macht, was ich will:

%Vor%

Ich musste Cookies lernen, um das Problem zu lösen, und ich hoffe, dass Sie mehr dazu sagen können. Das Ausgeben der Willkommensnachricht erforderte 3 Variablen, eine für Google-Benutzer, eine für eingeloggten Facebook-Benutzer und die Variable fbuser für den in der Antwort erwähnten Fall:

  

JavaScript / Cookies werden verwendet, wenn Sie versuchen, ein neues zu authentifizieren   Benutzer. Das gibt es nicht in Ihrer Datenbank und Sie haben keine   accessToken.

Also musste ich 3 Variablen verwenden, vielleicht können Sie es mit nur 2 Variablen tun?

%Vor%     
Niklas Rosencrantz 23.11.2011, 01:36
quelle

2 Antworten

1

JavaScript / Cookies werden verwendet, wenn Sie versuchen, einen neuen Benutzer zu authentifizieren. Das ist nicht in Ihrer Datenbank vorhanden und Sie haben nicht seinen accessToken.

Wenn Sie den accessToken des Benutzers haben - können Sie auf Facebook API von jeder Programmiersprache über HTTP zugreifen, ohne Cookies / Javascript, wenn Sie möchten. Es gibt einen Python-Client, zum Beispiel: Ссылка (war Ссылка )

    
Igor Artamonov 23.11.2011, 11:23
quelle
1

Gefunden das. Sieht auch gut aus und es bietet mehr als nur fb. Ссылка

    
user1980175 16.04.2014 12:01
quelle