Google authentication with nodejs


Question

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 ?

1
22
5/23/2017 10:30:17 AM

Accepted Answer

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/

9
1/3/2014 2:18:57 PM

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.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon