2012-04-11 179 views
21

我试图通过我的node.js服务器访问Google身份验证API,但我无法找到如何。基本上,我希望用户到达我的登录页面,点击认证按钮,然后服务器将他重定向到Google API,用户允许我的应用访问他的数据,然后Google API将用户重定向到我的网站授权令牌。Google身份验证与nodejs

我已经设置了oauth2所需的url,它似乎工作(如果我把它粘贴到我的网页浏览器中,它会在google授权页面上重定向我)。我看到this post似乎回答我的问题,但我不怎么处理快速代码部分。

这里是我使用的代码:

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

但这种方法我的客户端页面(我的Ajax请求的错误引发领域)上返回一个错误。如果我在没有“位置”信息的情况下将HTTP代码更改为200,则它会在客户端上显示一个“暂时移动”页面,并带有一个将我重定向到Google API授权页面的按钮。

有什么建议吗?

+3

使用https://github.com/google/google-api-nodejs-client。 – 2013-03-13 12:48:22

回答

9

我建议为该任务使用现有的模块。 everyauth是一个模块,不仅允许oauth2访问Google,还允许其他大多数提供该平台的平台。我在我的项目中使用它来访问Twitter。它也有express集成。

你可以在The Node Toolbox寻找更多的替代品。想到护照,

8

我用Passport(与MS验证方案无关!)已经有了很好的结果!我最初尝试了everyauth,但IMO的护照更适合expressjs的惯例​​。

有一个谷歌身份验证提供者就可以使用:http://passportjs.org/guide/google/

+0

请注意,'passport-google'模块使用OpenID,Google不再支持此功能。请改用https://www.npmjs.com/package/passport-google-oauth2 – Luc 2016-02-23 21:38:47