I'm trying to reach Google authentication API with my node.js server but i just can't find how. Basically, i want the user to arrive on my login page, click on the authentication button, then the server redirects him to the Google API, the user allows my app to access his data and then the Google API redirects the user to my site with the authorization token.
I've set up the url required by oauth2 and it seems to work (if i paste it in my web browser, it redirects me on google authorization page). I saw this post which seemed to answer my question but i don't how to handle the express code part.
Here is the code i'm using :
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); }); });
But this method returns an error on my client page (raised by the error field of my ajax request). If i change the HTTP code to 200 without the "Location" information, it displays on the client a "Moved Temporarily" page with a button which redirects me to Google API authorization page.
Any suggestion ?
I would suggest to use existing modules for that task. everyauth is a module that allows not only oauth2 access to Google, but to most other platform that offer it as well. I am using this for twitter access on my projects. It has express
integration as well.
You can look for more alternatives at The Node Toolbox. Passport comes to mind.
I've had good results with Passport (not related to the MS authentication scheme!). I initially tried everyauth, but IMO passport fits better with expressjs conventions.
There's a Google auth provider ready to use: http://passportjs.org/guide/google/
As stated by Burcu Dogan, Google has released an official client library for accessing Google APIs. It can be found here : https://github.com/google/google-api-nodejs-client/
You may want to checkout my Node.JS + Google Calendar project here: https://github.com/berryboy/google-calendar
I also have a few examples of using google oauth.