Twitter-Authentifizierung mit Passport Middleware in Node

8

Ich entwickle eine Website mit Node.js (mit Express-Framework). Um die Twitter-Authentifizierung zu verwenden, verwende ich passport module (http://passportjs.org) und seinen Wrapper für Twitter mit dem Namen passport-twitter .

Mein serverseitiges Skript ist:

%Vor%

Der URI für die Anmeldung ist http://local.host:3000/auth/twitter ; Wenn ich es besuche, zeigt Twitter mir das Authentifizierungsformular für die Verknüpfung meines Kontos mit meiner eigenen Website, aber nach diesem Schritt tritt der folgende Fehler auf:

%Vor%

Wie kann ich dieses Problem lösen? Mit freundlichen Grüßen, Vi.

    
iJade 14.10.2012, 17:46
quelle

5 Antworten

7
___ qstntxt ___

Ich entwickle eine Website mit Node.js (mit Express-Framework). Um die Twitter-Authentifizierung zu verwenden, verwende ich User module (http://passportjs.org) und seinen Wrapper für Twitter mit dem Namen findOrCreate .

Mein serverseitiges Skript ist:

%Vor%

Der URI für die Anmeldung ist findById ; Wenn ich es besuche, zeigt Twitter mir das Authentifizierungsformular für die Verknüpfung meines Kontos mit meiner eigenen Website, aber nach diesem Schritt tritt der folgende Fehler auf:

%Vor%

Wie kann ich dieses Problem lösen? Mit freundlichen Grüßen, Vi.

    
___ answer18076256 ___

Das habe ich gemacht, als ich den gleichen Fehler sah, der besagt, dass %code% nicht definiert ist:

%Vor%     
___ qstnhdr ___ Twitter-Authentifizierung mit Passport Middleware in Node ___ answer30195199 ___

Ich denke, die API ist nicht bereit für die Fälle nicht Benutzer db-Integration. Meine Lösung war, die Funktion %code% zu ignorieren und eine Weiterleitung zur Erfolgsseite durchzuführen.

%Vor%     
___ tag123twitter ___ Twitter ist ein Microblogging-Dienst, mit dem Nutzer kurze "Tweets" mit bis zu 280 Zeichen veröffentlichen können. Diese können auch über ihre API (https://developer.twitter.com) gebucht werden. ___ answer25190619 ___

Ich stieß auf dasselbe Problem, als ich die BeatsMusic OAuth2-Strategie für Passport in Kraken integrierte. Es sieht so aus, als ob die Beispiele für die verschiedenen Kraken Passport Integrationsstrategien die gleiche einfache Beispieldokumentation verwenden, die das Benutzerobjekt nicht explizit diskutiert (verständlich).

Ich habe herausgefunden (aus dem Graben durch die Passstrategie Beispiele gefunden Ссылка ) dass der Benutzer ein Modell sein soll, das auf dem Mongoose-Modellschema basiert und außerdem mit dem Ссылка -Plugin konfiguriert ist.

Nachdem ich das %code% hinzugefügt und dieses Plugin dem Benutzermodell hinzugefügt habe, voila! keine Fehler mehr:)

Klingt so, als ob Sie die DB-Funktionalität nicht benötigen, also können Sie den Auth-Check wahrscheinlich entfernen.

Ich hoffe, dies hilft anderen, die ähnliche Probleme haben.

    
___ tag123oauth ___ OAuth (Open Authorization) ist eine Spezifikation für Client-Anwendungen, um im Auftrag eines Benutzers auf geschützte Ressourcen zuzugreifen. Es wurde als eine Alternative für Benutzer entwickelt, die ihre Anmeldeinformationen an Anwendungen von Drittanbietern weitergeben. ___ tag123express ___ Express ist ein minimales und flexibles Node.js-Webanwendungs-Framework, das eine Reihe robuster Funktionen zum Erstellen von Webanwendungen bietet. ___ antwort12886344 ___

Sie müssen Ihren Benutzertyp irgendwo definieren. Es sieht so aus, als ob Sie erwarten, dass dieses Ding %code% existiert und die Funktionen %code% und %code% hat, aber Sie haben das nirgendwo definiert. Wo findest du diese Nutzer? Diejenigen, die nicht gefunden werden, wo werden sie erschaffen? Benutzt du eine Datenbank? Wie verbinden Sie sich mit der Datenbank? Ich glaube, du hast den Schritt "Model" vergessen. Vielleicht möchten Sie einen Blick auf Mongoose Auth werfen, das wie Passport aussieht, aber direkt in Mongoose , die mit einer Mongo Datenbank

zusammenhängt     
___ tag123nodejs ___ Node.js ist ein ereignisbasiertes, nicht blockierendes asynchrones I / O-Framework, das die Google V8-JavaScript-Engine und die libuv-Bibliothek verwendet. Es wird für die Entwicklung von Anwendungen verwendet, die die Fähigkeit zum Ausführen von JavaScript sowohl auf dem Client als auch auf der Serverseite stark ausnutzen und daher von der Wiederverwendbarkeit von Code und dem Mangel an Kontextwechsel profitieren. ___ answer40249125 ___

Zur weiteren Erklärung von Max 'Antwort: "Sie müssen %code% selbst erstellen"

Lesen Sie hier

TL: DR - Im Grunde müssen Sie ein Benutzerschema haben, das Sie verwenden, um Benutzer zu setzen und Benutzer zu überprüfen, es benötigt ein mongoose db-Backend, das eigentlich einfach zu konfigurieren ist.

Erstellen Sie im Wesentlichen diese Middleware:

%Vor%     
___ tag123passporttwitter ___ Passport-Strategie für die Authentifizierung mit Twitter mithilfe der OAuth 1.0a-API. ___
Max 14.10.2012, 20:40
quelle
3

Das habe ich gemacht, als ich den gleichen Fehler sah, der besagt, dass User nicht definiert ist:

%Vor%     
vsync 06.08.2013 09:21
quelle
0

Ich stieß auf dasselbe Problem, als ich die BeatsMusic OAuth2-Strategie für Passport in Kraken integrierte. Es sieht so aus, als ob die Beispiele für die verschiedenen Kraken Passport Integrationsstrategien die gleiche einfache Beispieldokumentation verwenden, die das Benutzerobjekt nicht explizit diskutiert (verständlich).

Ich habe herausgefunden (aus dem Graben durch die Passstrategie Beispiele gefunden Ссылка ) dass der Benutzer ein Modell sein soll, das auf dem Mongoose-Modellschema basiert und außerdem mit dem Ссылка -Plugin konfiguriert ist.

Nachdem ich das User = require('../PATH_TO/user') hinzugefügt und dieses Plugin dem Benutzermodell hinzugefügt habe, voila! keine Fehler mehr:)

Klingt so, als ob Sie die DB-Funktionalität nicht benötigen, also können Sie den Auth-Check wahrscheinlich entfernen.

Ich hoffe, dies hilft anderen, die ähnliche Probleme haben.

    
eskot 07.08.2014 19:26
quelle
0

Ich denke, die API ist nicht bereit für die Fälle nicht Benutzer db-Integration. Meine Lösung war, die Funktion done() zu ignorieren und eine Weiterleitung zur Erfolgsseite durchzuführen.

%Vor%     
EnZo 12.05.2015 15:22
quelle
0

Zur weiteren Erklärung von Max 'Antwort: "Sie müssen User selbst erstellen"

Lesen Sie hier

TL: DR - Im Grunde müssen Sie ein Benutzerschema haben, das Sie verwenden, um Benutzer zu setzen und Benutzer zu überprüfen, es benötigt ein mongoose db-Backend, das eigentlich einfach zu konfigurieren ist.

Erstellen Sie im Wesentlichen diese Middleware:

%Vor%     
Jeff Anderson 25.10.2016 20:27
quelle