2012-04-11 30 views
21

Estoy tratando de llegar a la API de autenticación de Google con mi servidor node.js, pero no puedo encontrar cómo. Básicamente, quiero que el usuario llegue a mi página de inicio de sesión, haga clic en el botón de autenticación, luego el servidor lo redirige a la API de Google, el usuario permite que mi aplicación acceda a sus datos y luego la API de Google redirige al usuario a mi sitio con el token de autorización.Autenticación de Google con nodejs

He configurado la URL requerida por oauth2 y parece funcionar (si la pego en mi navegador web, me redirige a la página de autorización de google). Vi this post que parecía responder a mi pregunta, pero no sé cómo manejar la parte del código expreso.

Aquí está el código que estoy usando:

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);  
    }); 
}); 

embargo, este método devuelve un error en mi página del cliente (planteada por el campo de error de mi solicitud Ajax). Si cambio el código HTTP a 200 sin la información de "Ubicación", se muestra en el cliente una página "Movida temporalmente" con un botón que me redirecciona a la página de autorización de la API de Google.

¿Alguna sugerencia?

+3

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

Respuesta

9

Sugiero utilizar los módulos existentes para esa tarea. everyauth es un módulo que permite no solo el acceso a Oauth2 a Google, sino también a la mayoría de las plataformas que lo ofrecen. Estoy usando esto para el acceso de Twitter en mis proyectos. También tiene integración con express.

Puede buscar más alternativas en The Node Toolbox. Pasaporte viene a la mente.

3

Es posible que desee pago my Node.JS + proyecto de calendario de Google aquí: https://github.com/berryboy/google-calendar

también tengo unos pocos ejemplos del uso de Google OAuth.

+1

Amplíe su respuesta con más contenido del artículo vinculado. – bytebuster

8

He tenido buenos resultados con Passport (no relacionado con el esquema de autenticación de MS). Inicialmente probé everyauth, pero el pasaporte IMO se ajusta mejor con las convenciones expressjs.

Hay un proveedor de autenticación Google listo para usar: http://passportjs.org/guide/google/

+0

Tenga en cuenta que el módulo 'pasaporte-google' utiliza OpenID, que ya no es compatible con Google. En su lugar, use https://www.npmjs.com/package/passport-google-oauth2 – Luc

Cuestiones relacionadas