2012-04-11 18 views
21

Ich versuche, Google-Authentifizierung-API mit meinem node.js Server zu erreichen, aber ich kann einfach nicht finden, wie. Grundsätzlich möchte ich, dass der Nutzer auf meine Anmeldeseite gelangt, auf die Authentifizierungsschaltfläche klickt, der Server ihn dann zur Google API weiterleitet, der Nutzer meiner App Zugriff auf seine Daten gewährt und dann die Google API den Nutzer auf meine Website umleitet das Autorisierungstoken.Google-Authentifizierung mit Nodejs

Ich habe die URL von oauth2 eingerichtet und es scheint zu funktionieren (wenn ich es in meinen Webbrowser einfüge, leitet es mich auf Google Autorisierungsseite um). Ich sah this post, die meine Frage zu beantworten schienen, aber ich nicht, wie man den Eilcode Teil handhabt. Hier

ist der Code Ich verwende:

https.get(options, function(res) { 
    var retrieved_data = ''; 
    res.on('data', function(data) { retrieved_data += data; }); 
    res.on('end', function() { 
     // FIXME 
     client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location}); 
     client_response.end(retrieved_data);  
    }); 
}); 

Aber diese Methode gibt einen Fehler auf meiner Client-Seite (von dem Fehlerfeld meines Ajax-Request angehoben). Wenn ich den HTTP-Code ohne die "Standort" -Information auf 200 ändere, wird auf dem Client die Seite "Vorübergehend verschoben" mit einer Schaltfläche angezeigt, die mich zur Google-API-Autorisierungsseite weiterleitet.

Irgendwelche Vorschläge?

+3

Verwenden Sie https://github.com/google/google-api-nodejs-client. –

Antwort

9

Ich würde vorschlagen, vorhandene Module für diese Aufgabe zu verwenden. ist ein Modul, das nicht nur oauth2 Zugriff auf Google erlaubt, sondern auch auf die meisten anderen Plattformen, die es anbieten. Ich benutze dies für Twitter-Zugriff auf meine Projekte. Es hat express Integration als auch.

Sie können weitere Alternativen unter The Node Toolbox suchen. Passport kommt mir in den Sinn.

3

Möglicherweise möchten Sie meine Node.JS + Google Kalender Projekt hier zur Kasse: https://github.com/berryboy/google-calendar

Ich habe auch ein paar Beispiele von Google OAuth.

+1

Bitte erweitern Sie Ihre Antwort mit mehr Inhalt aus dem verlinkten Artikel. – bytebuster

8

Ich hatte gute Ergebnisse mit Passport (nicht mit dem MS-Authentifizierungsschema verbunden!). Ich probierte zuerst jedenauthen, aber der IMO-Pass passt besser zu den expressjs-Konventionen.

Es ist ein Google-Auth-Provider bereit zu verwenden: http://passportjs.org/guide/google/

+0

Beachten Sie, dass das Modul "pass-google" die OpenID verwendet, die nicht mehr von Google unterstützt wird. Verwenden Sie stattdessen https://www.npmjs.com/package/passport-google-oauth2 – Luc